注意:我想保存AS3类的实际字节码,而不是它的实例!
正在外部加载一个类,并通过URLLoader
然后Loader.loadBytes
提取。然后从该应用程序域中提取单个类并在项目中使用。
现在,不是保存整个Loader(通过SharedObject
或其他存储方式),而是可以“提取”所需类的字节码和所有依赖关系,然后可以“注入”回到空壳或需要时可以重复使用的东西?
答案 0 :(得分:1)
所以你想评估(一些代码)? AS3中没有eval(),但这可能对您有所帮助: http://danielmclaren.com/2008/09/21/eval-in-as3-tips-for-executing-dynamic-actionscript
您也可以像AMevil建议的那样在AMF中保存课程。
示例:
package vos
{
import flash.utils.ByteArray;
import org.flixel.FlxPath;
public class ActionVO extends Object
{
public var pid:uint;
public var cid:uint;
public var action:String;
public var data:*;
}
}
您正在保存所需的共享对象的课程
registerClassAlias( "org.flixel::FlxPath", FlxPath );
registerClassAlias( "org.flixel::FlxPoint", FlxPoint );
registerClassAlias( "VO::ActionVO", ActionVO );
并保存:
var byteArray:ByteArray = new ByteArray();
byteArray.writeObject(data);
shared.data.byteArray = byteArray;
..并加载:
var ba:ByteArray = shared.data.byteArray
ba.uncompress();
var vo:ActionVO = ba.readObject() as ActionVO;
你有vo(简单值对象类,包括更复杂的类FlxPath)
答案 1 :(得分:0)
您可以尝试使用Byte Array.write Object,它将保存对象属性的可逆快照。