保存类的字节码(到SharedObject或数据库)

时间:2011-03-11 20:54:25

标签: flash flex actionscript-3 actionscript

注意:我想保存AS3类的实际字节码,而不是它的实例!

正在外部加载一个类,并通过URLLoader然后Loader.loadBytes提取。然后从该应用程序域中提取单个类并在项目中使用。

现在,不是保存整个Loader(通过SharedObject或其他存储方式),而是可以“提取”所需类的字节码和所有依赖关系,然后可以“注入”回到空壳或需要时可以重复使用的东西?

2 个答案:

答案 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,它将保存对象属性的可逆快照。