繁体   English   中英

如何在Flash Adob​​e Air中保存和加载对象

[英]How to save and load objects in Flash Adobe Air

我觉得自己在这方面还不够深入-我需要找出一种方法,允许用户在我正在制作的外太空游戏中保存他们的星系。 在最基本的级别上,我需要将随机生成的星系(这是自定义类的实例)写入磁盘,然后再从磁盘中读取它。 我之前没有使用过Air的文件流功能,但遇到了一些麻烦。 我的代码:

    public function saveGame(e:MouseEvent):void
    {
        trace("save");
        var file:File = File.desktopDirectory.resolvePath("test.sv");

        var fileStream:FileStream = new FileStream();
        fileStream.open(file, FileMode.WRITE);
        fileStream.writeObject(gal);
        fileStream.close();
    }

    public function loadGame(e:MouseEvent):void
    {
        trace("load");

        var file:File = File.desktopDirectory.resolvePath("test.sv");

        if (file.exists)
        {
            var obj:Object;
            var fileStream:FileStream = new FileStream();
            fileStream.open(file, FileMode.READ);
            obj = fileStream.readObject();
            fileStream.close();
            trace(obj);
        }
    }

对象“ gal”是我的星系,并且我已经验证它是对象的有效实例(它包含子对象并且包含许多变量),但是由于某种原因,在桌面上创建的文件只有1个字节-显然太小了包含任何信息。

当我在第二个函数中跟踪对象时,它为null。

在此方面的任何帮助将不胜感激,因为很难为像我这样的初学者找到清楚解释的信息。

感谢您的任何见解。

我认为我们只能序列化动态对象,并将其另存为json。 像XML,Array,Object,dictionary可以做到这一点。 确保其元素是基本类型,并且动态类实例可以相互关联。

为什么不保存一些XML或您可以读入并解析为对象的内容呢?

之前已经问过类似的问题。 查看答案: IExternalizable(as3)保存应用程序状态AIR

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM