Есть ли способ получить доступ ко всем экспортированным символам в файле * .swf?
Я имею в виду все символы, которые отмечены Экспорт в Actionscript вБиблиотека Flash IDE .Таким образом, я мог бы использовать класс getDefinition () без необходимости заранее знать имя символа.
Это для внутреннего инструмента, созданного в AS3, который будет работать в рамках фреймворка, который требуетвыполнить некоторые операции с каждым символом файла *. swf .Таким образом, производительность не требуется, и хакерское решение (доступ к ByteArray из swf или что-то в этом роде) действительно.
Спасибо
Как Даниэль предложилЯ закончил тем, что использовал as3swf для анализа ByteCode файла * .swf и чтения класса.
Вот простая функция, которую я сделал, которая возвращает массив, содержащий имена символов, готовые киспользоваться с getDefinition () .Вы должны передать ByteArray файла *. Swf .
private function getSymbolList(bytes:ByteArray):Array {
var swf:SWF = new SWF(bytes);
var ret:Array = [];
for each(var tag:ITag in swf.tags) {
if(tag is TagSymbolClass) {
var symbolClass:TagSymbolClass = tag as TagSymbolClass;
for (var i:int = 0; i < symbolClass.symbols.length; i++) {
ret.push(symbolClass.symbols[i].name);
} return ret;
}
} return ret;
}
С новым 11.3 Flash API ,эта функция встроена.
var definitions:Vector.<String> =
this.loaderInfo.applicationDomain.getQualifiedDefinitionNames();