скомпилировать SWC во Flash для использования в Flex, с классом, написанным на Flex - PullRequest
2 голосов
/ 17 июня 2009

OK

Звучит сложно, но это не так. Вот оно: Я хочу использовать некоторые ресурсы (кнопки и т. Д.), Которые я создаю во флэш-памяти в проекте 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 ]

3 голосов
/ 18 июня 2009

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

Моя кнопка 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%. Это то, что моя интуиция воспринимает как должное через наблюдение, так что я могу ошибаться технически. Если у кого-то есть исправления, они приветствуются.

2 голосов
/ 17 июня 2009

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

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

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

...