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