2014-02-13 43 views
0

有什么方法可以保存Flash中当前舞台上的对象吗?将动画片段和按钮的状态保存到文件。

例如,如果用户拖动从面板是所述接口的一部分,并且某处其放置在台上,然后通过点击Button添加TextField特定MovieClip

有没有办法将位置,属性和其他各种东西保存到外部文件?因此,如果用户点击一个'加载'按钮,当程序下次运行时它会将MovieClip和文本加载到空白阶段,并且它们会处于完全相同的位置?

回答

0

是的,您可以将这些信息保存在XML文件中。

示例XML的可能是像这样,

WorkSpace.xml

<stageObjects> 
    <object libName="myTextField" type="TextField" xPos="20" yPos"10" txt="SomeText" /> 
    <object libName="myMovieClip" type="MovieClip" xPos="20" yPos"10" /> 
</stageObjects> 

在您的应用程序负载,读取这个XML文件,并采取必要的行动。

+0

对,我明白了。我的应用程序基本上由'Buttons'组成,它们在点击时将'Movieclips'添加到舞台上。我也有一个创建“TextField”和“ColorPicker”来改变文本颜色的按钮。我可以将'xPos'和'yPos'设置为从舞台获取对象的x和y值吗? – user3306038

+0

将每个操作都记录在XML文件中。在此之前,您首先剪切了您的XML结构,以便您可以在应用中执行各种操作和操作。 –

+0

你是否知道在实践中是否有任何有用的文件或例子可以帮助我? – user3306038

0

如果我有任何类型的本地客户端级别的游戏,并且我使用Flash来保存本地值以达到相同的目的,我会利用SharedObject Class。它不是传统的MIME类型,它也有.sfo扩展名,通常存储在随机目录中。所以只有在用户刷新其“常规”浏览数据时才能清除它们。不要太复杂,这个演示将允许你保存数据,关闭SWF文件,重新打开它并找到最后的设置。

package {

import flash.display...
import flash.events...
import flash.events.NetStatusEvent;
import flash.net.SharedObject;
import flash.net.SharedObjectFlushStatus;
import flash.text.TextField;
import flash.text...

public class SharedObjectClass {

private var _so:SharedObject; 
    private var _in:TextField = new TextField(); 
    public function SharedObjectClass() { 
     _so = SharedObject.getLocal("application-name"); 
     addChild(_in.text = String(_so.data.savedValue)); 
    } 
    private function saveValue(event:*=null):void { 
     _so.data.savedValue = _in.text; 
     var flushStatus:String = null; 
     try { 
      flushStatus = _so.flush(10000); 
     } catch (error:Error) 
      //..nothing? 
     } 
 if(flushStatus != null) { 
      if(flushStatus == SharedObjectFlushStatus.PENDING) { 
       _so.addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
      } 
     } 
    } 

    private function clearValue(event:*=null):void { 
     delete _so.data.savedValue; 
    } 

    private function onFlushStatus(event:NetStatusEvent):void { 
     switch (event.info.code) { 
      case "SharedObject.Flush.Success": 
      break; 
      case "SharedObject.Flush.Failed": 
      break; 
     } 

     _so.removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus); 
    } 

}
}

价值_co永远是你参考这个对象,重命名它会创建一个新的实例。我已将这些文件分开,并且它们都是写入良好的XML文件,适用于AMF For Servers。在这个例子中,简单描述了“保存”,“清除”和“冲洗方法”。