http://www.bytearray.org/?p=175
http://etcs.ru/pre/getDefinitionNamesSource/
Кажется, что оба этих класса выполняют то, что я хочу сделать, анализируя необработанные данные ByteArray SWF.Я представляю их как лучший ответ на данный момент, но как родной способ достижения этого все еще желателен.Это даст ответ, если кто-то сможет показать такой метод здесь.
Краткое описание использования второго класса, getDefinitionNamesSource, поскольку его реализовать немного проще.
import ru.etcs.utils.getDefinitionNames;
Конечно, импортируйте класс.
var classes : Array = getDefinitionNames( displayObject.loaderInfo.bytes );
Затем вы можете вызвать вышеупомянутое, где displayObject - любой экземпляр DisplayObject
, передав ему либо loaderInfo
, либо loaderInfo.bytes
(класс получит байты из loaderInfo, если вы это передадите).Возвращает массив имен классов.Приятной особенностью этого класса является то, что он возвращает несвязанные классы!Это делает его идеальным для этой цели!Затем вы можете использовать getDefinition () в загруженном SWF, чтобы получить класс таким образом, чтобы вы могли создать его экземпляр!В следующем примере.Загружен SWF с символами MovieClip
.В обработчике Event.COMPLETE следующий код создаст один из этих символов как myInstance , после чего вы сможете делать все, что захотите.
var MyAsset : Class = loader.contentLoaderInfo.applicationDomain.getDefinition( classes[0] ) as Class;
var myInstance : MovieClip = new MyAsset();