Save/Load MovieClip Air Android
Save/Load MovieClip Air Android
在我正在开发的 Android 应用程序的 AS3 AIR 中,用户可以使用形状和图形属性构建一些绘图。它必须能够让用户将其绘图保存在其 File.applicationStorageDirectory
中,然后再次加载其绘图,并且绘图属性完好无损。
看下面的代码:
这是代表抽屉的class:
public class Background extends Sprite {
public var shape:Shape;
public function Background(){
this.shape = new Shape();
shape.graphics.beginFill(0x000000);
shape.graphics.drawRect(0, 0, 400, 400);
shape.graphics.endFill();
this.addChild(shape);
}
}
外面,进入主线:public var bg:Background;
所以,当我从外部加载一些 swf 时,我可以 save/load 它没有任何问题,因为我将它的 ByteArrays 放入加载器 class.
但是如何保存在运行时构建的 DisplayObject?
像这样:
bg = new Background();
try{
bytes = new ByteArray();
file = File.applicationStorageDirectory.resolvePath("test/some.swf");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(bytes) // -----HERE, I DO NOT HAVE bg bytes,
fileStream.close();
} catch (e:IOError){
fileStream.close();
}
我试过使用 writeObject() 方法,它可以正常保存,但是当我尝试加载它时,抛出异常:未知文件格式。
我该怎么做?我怎样才能提取 bg 字节,或以任何方式保存它?显然,我想再次取回它,而且它的所有属性都完好无损。
DisplayObjects 的序列化在很长一段时间内是不可能的,并且无提示地失败了。
您可以自己进行序列化,通过记录用户的操作,然后保存操作记录而不是结果。
(想到命令模式。)
或者,这样:
http://www.bytearray.org/?p=4893
另外,看看这个问题:
How to read data from shape/graphics object
在我正在开发的 Android 应用程序的 AS3 AIR 中,用户可以使用形状和图形属性构建一些绘图。它必须能够让用户将其绘图保存在其 File.applicationStorageDirectory
中,然后再次加载其绘图,并且绘图属性完好无损。
看下面的代码:
这是代表抽屉的class:
public class Background extends Sprite {
public var shape:Shape;
public function Background(){
this.shape = new Shape();
shape.graphics.beginFill(0x000000);
shape.graphics.drawRect(0, 0, 400, 400);
shape.graphics.endFill();
this.addChild(shape);
}
}
外面,进入主线:public var bg:Background;
所以,当我从外部加载一些 swf 时,我可以 save/load 它没有任何问题,因为我将它的 ByteArrays 放入加载器 class.
但是如何保存在运行时构建的 DisplayObject? 像这样:
bg = new Background();
try{
bytes = new ByteArray();
file = File.applicationStorageDirectory.resolvePath("test/some.swf");
fileStream = new FileStream();
fileStream.open(file, FileMode.WRITE);
fileStream.writeBytes(bytes) // -----HERE, I DO NOT HAVE bg bytes,
fileStream.close();
} catch (e:IOError){
fileStream.close();
}
我试过使用 writeObject() 方法,它可以正常保存,但是当我尝试加载它时,抛出异常:未知文件格式。
我该怎么做?我怎样才能提取 bg 字节,或以任何方式保存它?显然,我想再次取回它,而且它的所有属性都完好无损。
DisplayObjects 的序列化在很长一段时间内是不可能的,并且无提示地失败了。
您可以自己进行序列化,通过记录用户的操作,然后保存操作记录而不是结果。 (想到命令模式。)
或者,这样: http://www.bytearray.org/?p=4893
另外,看看这个问题: How to read data from shape/graphics object