У класса ApplicationDomain есть замечательный метод getDefinitionByName, возвращающий нам класс нужного объекта или функцию. Но нет метода getDefinitionNames, возвращающий имена всех классов, находящихся в данном домене (или загруженном swf). Моя функция getDefinitionNames призвана устранить данный недостаток. Для получения имен классов необходимо передать объект LoaderInfo или ByteArray, содержащий корректный swf.
Исходники
Версия 2.1 от 09.03.10:
Теперь в обычный режим поиска возвращает только классы (ранее были ещё и интерфейсы).
Появилась поддержка Flash 10 (наконец-то
) и типа данных Vector. В расширенном режиме поиска классы типа Vector. (где X — имя класса) также будут перечислены.
Версия 2.0 от 16.09.09:
Новый режим extended, работающий по другому алгоритму (чуть-чуть медленнее обычного поиска). В этом режиме вы получите не только список классов и интерфейсов, а все доступные definitions, т. е. функции, пространства имен, константы, переменные и т. п.
Также появился режим onlyLinked (в этом случае не работает extended), при котором вы получите список только тех классов, которые указаны в качестве linkage в библиотеке swf. В том числе те, которые создаются при использовании метатега [Embed]. Такой режим существенно быстрее обычного и расширенного поиска и рекомендуется в тех случаях, когда вы загружаете библиотеку графических и звуковых ресурсов и вам нужен список только самих ресурсов.
Эта версия полностью совместима с предыдущими, при обновлении вам потребуется всего лишь обновить код getDefinitionNames
Версия 1.1.1 от 16.09.09:
Ещё раз исправлена ошибка поиска классов
Версия 1.1 от 13.09.09:
Исправлена ошибка, в результате которой второй и последующие кадры swf, содержащие код, не распознавались
В качестве аргумента в функцию можно передавать как LoaderInfo (как было в предыдущей версии), так и ByteArray, содержащий корректный swf
P. S.: Решение для тех, кто хочет знать о подгруженном swf больше.