Есть ли способ получить доступ ко всем экспортированным символам в * .swf-файле?Доступ ко всем символам в * .swf-файле
Я имею в виду все символы, которые помечены Экспорт в Actionscript в библиотеке Flash IDE. Таким образом, я мог бы использовать класс getDefinition(), не зная заранее имя символа.
Это для внутреннего инструмента, сделанного в AS3, который будет работать вдоль рамки, которая должна выполнять некоторые операции над каждым символом файла * .swf.
Таким образом, производительность не требуется, и допустимо хакерское решение (доступ к ByteArray из swf или что-то в этом роде).
Благодаря
Как Daniel предлагаемых, я закончил с использованием as3swf для разбора байт-код в * .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();
Считаете ли вы, что декомпилятор SWF удовлетворит ваши потребности? – ToddBFisher
Если декомпилятор может быть вызван из моего инструмента (который является swf-файлом) и вернет список с именами символов из внешнего swf, тогда да. – Veehmot