Скомпилируйте SWC во Flash для использования в Flex, с классом, написанным на Flex

В порядке,

Звучит сложно, но это не так. А вот и я: я хочу использовать некоторые ресурсы (кнопки и т. Д.), Которые я создаю во флэш-памяти в проекте Flex ActionScript. Поскольку все мои ресурсы ниже 10K, я не планирую загружать SWF, подождите, пока он загрузится, и создайте интерфейс. Я хочу использовать SWC и просто скопировать нужные мне клипы. Кроме того, я хочу, чтобы у моего класса Button были некоторые дополнительные свойства, и именно здесь возникает проблема.

Если в свойствах связывания в Flash IDE я добавлю ссылку на пользовательский класс Button и отследю дочерний элемент Button MovieClip, я получу правильную трассировку. Если затем я создаю Button в классе Main во Flex, используя сгенерированный файл SWC и отслеживаю того же потомка Button MovieClip, я получаю нулевое значение.

Это почему? Есть ли способ обойти это? Я подумал об использовании Flex Component Kit, но так как я работаю над простым проектом ActionScript и не использую среду Flex, я не вижу смысла в использовании Component Kit на данный момент.

Спасибо!

2 ответа

Решение

Я думаю, что понял.

Моя кнопка MovieClip связывалась с классом в той же папке src, что и остальная часть моего кода ActionScript в проекте Flex ActionScript. (Путь к классу as3 был установлен равным "../" из папки ресурсов, где находится файл.fla, на один уровень до src)

Когда Flash скомпилировал, класс был найден, и я попал в файл.swc. Вот почему я получил символ, прослеженный от вспышки. Когда Flex скомпилирован, класс был найден в каталоге src, поэтому была скомпилирована новая версия того же класса, хотя она уже существовала в файле swc. Так как flex нашел файл.as, но не знал, что он был связан с символом в Flash IDE (я не думаю, что он может это сделать), Flex создал свою версию класса, но так как ни один символ не был связан для этого класса ребенок Баттона, которого я отслеживал, был нулевым.

Я полагаю, что использование пакетов и хранение связанных классов fla раздельно, чтобы Flex не компилировал один и тот же класс дважды.

Странно то, что я не получил ни предупреждения, ни ошибки, поэтому предположил, что все в порядке.

Быстрый и не очень грязный обходной путь заключался в удалении физического класса Button из файловой системы, чтобы Flash мог генерировать его версию во время компиляции и иметь ссылки на дочерние элементы символа Button. Затем во Flex я создал класс, расширяющий Button, и добавил нужный мне код. Так как сгенерированный класс был скомпилирован в файле.swc, Flex мог видеть это, и у меня не было проблем с расширением.

Вот и все! Боб, ты дядя!

Я предполагаю, что в том, что происходит, я не уверен на 100%. Это то, что моя интуиция воспринимает как должное через наблюдение, поэтому я могу быть технически неправым. Если у кого-то есть исправления, они приветствуются.

Я не уверен, правильно ли я читаю ваш вопрос, но действительно ли вы хотите встроить изображение / ресурс, который доступен с самого начала, вместо изображения / ресурсов, загружаемых после запуска приложения?

Если это так, проверьте эту ссылку. Он объясняет, как встроить любой актив в проект ActionScript. http://kennethsutherland.com/2009/04/21/why-flex-why-actionscript-why-flash/

Надеюсь, это то, что вы после.

Другие вопросы по тегам