Сохранение байт-кода класса (в SharedObject или в базу данных) - PullRequest
1 голос
/ 11 марта 2011

ПРИМЕЧАНИЕ. Я хочу сохранить фактический байт-код для класса AS3, а НЕ его экземпляр!

Класс загружается извне и извлекается через URLLoader итогда Loader.loadBytes.Один класс затем извлекается из этого домена приложения и используется в проекте.

Теперь вместо сохранения всего загрузчика (либо через SharedObject, либо с помощью других средств хранения) можно "извлечь"байт-код необходимого класса и всех зависимостей, которые затем можно" внедрить "обратно в пустую оболочку или что-то, что можно использовать повторно при необходимости?

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Итак, вы хотели бы оценить (некоторый код)? В AS3 нет eval (), но это может помочь вам: http://danielmclaren.com/2008/09/21/eval-in-as3-tips-for-executing-dynamic-actionscript

Вы также можете сохранить класс в AMF, как предложено 3Devil.

Пример:

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)

0 голосов
/ 12 марта 2011

Вы можете попробовать использовать ByteArray.writeObject, который сохранит обратимый снимок свойств объекта.

...