Actionscript 3 如何使用as3在Flash游戏中保存和加载最新的电影剪辑?
当玩家在游戏视图中导航时,我用“addChild/removeChild”添加或删除了许多movieclips。我想保存这些电影剪辑(可能使用共享对象),以便加载函数显示最后的查看状态。我不得不说,每次观看都会有不止一个电影剪辑。我还没有这方面的具体代码。我不建议您将对象完全存储在SO中。仅保存对象配置数据。Adobe Flash Professional CS6(第12节) 主-SharedObjectSaver.asActionscript 3 如何使用as3在Flash游戏中保存和加载最新的电影剪辑?,actionscript-3,Actionscript 3,当玩家在游戏视图中导航时,我用“addChild/removeChild”添加或删除了许多movieclips。我想保存这些电影剪辑(可能使用共享对象),以便加载函数显示最后的查看状态。我不得不说,每次观看都会有不止一个电影剪辑。我还没有这方面的具体代码。我不建议您将对象完全存储在SO中。仅保存对象配置数据。Adobe Flash Professional CS6(第12节) 主-SharedObjectSaver.as package { import flash.display.Movi
package {
import flash.display.MovieClip;
import flash.net.SharedObject;
import flash.utils.ByteArray;
import flash.net.registerClassAlias;
public class SharedObjectSaver extends MovieClip
{
public function SharedObjectSaver()
{
//Step 1. Check object
//this.addChild(new SomeObject(20,100));
//Step 2. Save object to SharedObject file.
registerClassAlias("SomeObject", SomeObject);
var mySo2:SharedObject = SharedObject.getLocal("SaveData");
mySo2.data.someObject = new ByteArray();
mySo2.data.someObject.writeObject( new SomeObject() );
mySo2.flush();
//Step 3. Try to read object from SharedObject file.
registerClassAlias("SomeObject", SomeObject);
var mySo3:SharedObject = SharedObject.getLocal("SaveData");
mySo3.data.someObject.position = 0;
var someObjectFromSO:* = mySo3.data.someObject.readObject() as SomeObject;
trace(someObjectFromSO is SomeObject); // true
this.addChild(someObjectFromSO);
trace(someObjectFromSO.s);
}
}
}
正在序列化SomeObject类-SomeObject.as
package {
import flash.display.Sprite;
import flash.display.Shape;
import flash.display.Loader;
import flash.net.URLRequest;
public class SomeObject extends Sprite
{
public var s:String;
// You can not require passing arguments to the constructor
// because ByteArray in readObject() method tries to read class and
// create an instance of serialized object.
public function SomeObject()
{
var loader:Loader = new Loader();
loader.load(new URLRequest('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-logo.png'));
s = "Hi";
trace("I'm called");
var rectangle:Shape = new Shape;
rectangle.graphics.beginFill(0xFF0000);
rectangle.graphics.drawRect(0, 0, 10,20);
rectangle.graphics.endFill();
this.addChild(rectangle);
this.addChild(loader);
}
}
}
那没有任何意义。为什么不存储数据,然后根据这些数据重新创建视图?你是说一个接一个?这是我试图避免的,但我以前从未使用过保存加载。A,也许我应该更仔细地查看您给我的链接,尽管大多数答案都与air有关。欢迎使用StackOverflow:))我不会向您提供代码,但我会帮助您了解如何自己编写它。这就是它的工作原理,谢谢你。这对我来说似乎很难,所以我需要时间去理解并在项目中尝试。