我觉得我在这里有点偏离 - 我需要想办法让用户在我正在建造的外太空游戏中保存他们的星系。在最基本的层面上,我需要将随机生成的galaxy(它是一个自定义类的实例)写入磁盘,然后再从磁盘中读取它。我之前没有使用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。
对此的任何帮助都将非常感激,因为很难找到像我这样的初学者清楚解释的这些信息。
感谢您的任何见解。
答案 0 :(得分:0)
为什么不保存一些XML或者你可以读入并解析为对象的东西?
答案 1 :(得分:0)
以前曾提出过类似的问题。看看答案: IExternalizable (as3), Saving application state AIR
答案 2 :(得分:0)
我认为我们只能序列化动态对象,并将其保存为json。 像XML,Array,Object,dictionary就可以做到这一点。确保它们的元素是基本类型,动态类实例可以是interate。