【问题标题】:How to save and load the latest movie clips in a Flash Game with as3?如何使用 as3 在 Flash 游戏中保存和加载最新的影片剪辑?
【发布时间】:2017-12-22 20:30:04
【问题描述】:

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

【问题讨论】:

  • 这没有任何意义。为什么不直接存储数据,然后根据它重新创建视图?
  • 你的意思是一一吗?这是我试图避免的,但我以前从未使用过保存加载。
  • A,也许我应该仔细看看你给我的链接,虽然那里的大多数答案都与空气有关。
  • 欢迎来到 StackOverflow :))) 我不会为您提供代码,但我会帮助您了解如何自己编写代码。这就是它的工作原理。

标签: actionscript-3


【解决方案1】:

我不建议您将对象完全存储在 SO 中。仅保存对象配置数据。 Adobe Flash Professional CS6 (v. 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);
    }
}
}

【讨论】:

  • 谢谢你。对我来说似乎很难,所以我需要时间来理解并在一个项目中尝试它。
猜你喜欢
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 2013-09-29
  • 1970-01-01
  • 2011-03-07
  • 1970-01-01
  • 2017-06-24
相关资源
最近更新 更多