Actionscript 3 如何使用as3在Flash游戏中保存和加载最新的电影剪辑?

Actionscript 3 如何使用as3在Flash游戏中保存和加载最新的电影剪辑?,actionscript-3,Actionscript 3,当玩家在游戏视图中导航时,我用“addChild/removeChild”添加或删除了许多movieclips。我想保存这些电影剪辑(可能使用共享对象),以便加载函数显示最后的查看状态。我不得不说,每次观看都会有不止一个电影剪辑。我还没有这方面的具体代码。我不建议您将对象完全存储在SO中。仅保存对象配置数据。Adobe Flash Professional CS6(第12节) 主-SharedObjectSaver.as package { import flash.display.Movi

当玩家在游戏视图中导航时,我用“addChild/removeChild”添加或删除了许多movieclips。我想保存这些电影剪辑(可能使用共享对象),以便加载函数显示最后的查看状态。我不得不说,每次观看都会有不止一个电影剪辑。我还没有这方面的具体代码。

我不建议您将对象完全存储在SO中。仅保存对象配置数据。Adobe Flash Professional CS6(第12节)

主-SharedObjectSaver.as

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:))我不会向您提供代码,但我会帮助您了解如何自己编写它。这就是它的工作原理,谢谢你。这对我来说似乎很难,所以我需要时间去理解并在项目中尝试。