Actionscript 3 将MovieClips和按钮的状态保存到文件。

Actionscript 3 将MovieClips和按钮的状态保存到文件。,actionscript-3,file,flash,save,Actionscript 3,File,Flash,Save,有没有办法用Flash保存当前在舞台上的对象 例如,如果用户从作为界面一部分的面板拖动特定的MovieClip,并将其放置在舞台上的某个位置,然后通过单击按钮添加TextField 有没有办法将位置、属性和各种其他内容保存到外部文件 这样,如果用户点击了“加载”按钮,当程序下一次运行时,它将加载 MOVICELIP和文本回到空白阶段,并且它们将处于完全相同的位置。是的,您可以将此信息保存在XML文件中。例如: XML的示例可能是这样的 WorkSpace.xml <stageObjects

有没有办法用Flash保存当前在舞台上的对象

例如,如果用户从作为界面一部分的面板拖动特定的
MovieClip
,并将其放置在舞台上的某个位置,然后通过单击
按钮添加
TextField

有没有办法将位置、属性和各种其他内容保存到外部文件


这样,如果用户点击了“加载”按钮,当程序下一次运行时,它将加载<代码> MOVICELIP和文本回到空白阶段,并且它们将处于完全相同的位置。

是的,您可以将此信息保存在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文件并采取所需的操作。

如果我有任何类型的本地客户端级别游戏,并且我使用flash保存本地值,用于cookie可能具有的相同目的;我会利用这个机会。它不是传统的mime类型,它还有一个.sfo扩展名,它们通常存储在随机目录中。因此,只有当用户刷新“常规”浏览数据时,才会清除它们。在不太复杂的情况下,此演示将允许您保存数据、关闭SWF文件、重新打开它并找到最后一个设置

包{

导入闪存。显示…
导入flash.events…
导入flash.events.NetStatusEvent;
导入flash.net.SharedObject;
导入flash.net.SharedObjectFlushStatus;
导入flash.text.TextField;
导入flash.text…

公共类SharedObjectClass{

}
}


\u co
将始终是您对此对象的引用,重命名它将创建一个新实例。我已经将这些文件分开,它们是编写良好的XML文件,适合服务器的AMF。在本例中,“保存”、“清除”和“刷新方法”都有简单的详细说明。

好的,我明白了。我的应用程序基本上由
按钮组成
,这些按钮可以在点击时将
电影嘴唇
添加到舞台上。我还有一个按钮,可以创建一个
TextField
以及一个
颜色选择器来更改文本颜色。我可以将
xPos
yPos
设置为从后台获取对象的x和y值吗?在XML文件中记录每个操作。在此之前,您首先对XML结构进行了裁剪,以便在应用程序中执行各种操作和动作。您知道在实践中是否有任何有用的文档或示例可以帮助我吗?
   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);
   }