Самоанализ во время выполнения связанного SWC с использованием ActionScript 3.0 + Flash / Flex - PullRequest
3 голосов
/ 06 октября 2010

Ух ты, мой первый пост о переполнении стека. Я "прибыл"?

Хорошо, это чудак. Я пытаюсь определить, существует ли какой-либо программный способ для анализа классов в связанном SWC во время выполнения.

Чтобы дать немного больше информации (возможно, есть совершенно другой способ сделать это), я рассматриваю общую структуру для встраивания шрифтов. В настоящее время для встраивания шрифтов (используя связанный SWC, а не метатег [embed]) вам необходимо встроить шрифт в SWC с помощью Flash IDE, а затем вам нужно жестко кодировать ссылку на класс библиотечного актива в вашем код (возможно, созданный кем-то другим, с использованием другой IDE - например, FlashDevelop).

Теперь, если бы во время выполнения было возможно проанализировать SWC и перебрать все классы, которые он предоставляет, можно теоретически создать / зарегистрировать эти шрифты программно, не зная (во время компиляции), какими могут быть эти шрифты.

Отсюда возникает вопрос: кто-нибудь знает какой-либо способ получить доступ к SWC как к объекту во время выполнения и проанализировать его открытые классы?


Кроме того, обоснованием такого рода вещей является простое желание четко разделить обязанности по разработке и логике приложения. Дизайнеру легко внедрить шрифт, автора и SWC, а также отредактировать соответствующий внешний CSS-файл. Гораздо опаснее рассчитывать на них, чтобы обновлять жесткие ссылки на классы в коде, или рассчитывать на то, что клиент не изменит свое мнение об использовании шрифта после того, как задание будет скомпилировано и выпущено.

Ответы [ 2 ]

1 голос
/ 07 октября 2010

Вы можете загрузить файл как двоичный файл (или использовать свойство bytes в LoaderInfo рабочей области, если это основной файл), просмотреть «теги» для данных ABC, проанализировать их и найти нужные данные , Хотя это хлопот.

Есть такие вещи, как теги шрифтов. DefineFont2 (тип тега 48), который содержит FontID и FontName, DefineFontName (тип тега 88), который также содержит FontID и FontName. Может быть, это те данные, которые вам нужны. Если это так, то это может быть безумно быстро, чтобы просмотреть даже самый большой из файлов.

Вы можете прочитать спецификацию формата файла .swf здесь: http://www.adobe.com/devnet/swf.html

0 голосов
/ 07 октября 2010

Вы должны взглянуть на FLexSpy (fxspy) http://code.google.com/p/fxspy/

Есть и другие, которые также будут полезны:

KapInspect: http://lab.kapit.fr/display/kapinspect/Kap+Inspect

DeMonster DeBugger: http://demonsterdebugger.com/

...