Рабочий процесс ActionScript 3 с использованием SWC со связанными внешними классами - PullRequest
4 голосов
/ 17 ноября 2009

Я работаю над очень графическим приложением, которое использует контент из множества разных FLA. Однако я программист, поэтому я хочу выполнять все свои действия в Flash Builder, однако я хочу, чтобы мой дизайнер по-прежнему использовал несколько действий на временной шкале, таких как stop (); и даже несколько простых обработчиков кнопок для изменения вида. Я пытался найти лучший рабочий процесс для такого рода установки; Я пытался использовать Embed, но это убирает код временной шкалы, я пробовал Loader, но это не дало мне никакого завершения кода или проверки во время компиляции, и в настоящее время я использую SWC вместе с пользовательскими классами для подкласса элементов внутри SWC, который на данный момент является наилучшим сочетанием - вы получаете завершение кода, а сценарии временной шкалы все еще работают. У меня проблема в том, что у меня довольно сложное представление во Flash, и я хотел бы назначить реальные классы некоторым другим активам в библиотеке, но они не поддерживают ассоциацию классов при экспорте в SWC.

В качестве примера предположим, что у меня есть FLA с символом в библиотеке с именем View. Я даю этому классу связи "com.company.view.design.ViewDesign". Внутри этого представления находятся 3 кадра с разными символами, которые называются «content1», «content2» и «content3». Я даю эти похожие классы связывания "com.company.view.design.Content1" и т. Д. В моей основной кодовой базе у меня есть класс с именем com.company.view.View, который расширяет com.company.view.design.ViewDesign. Это дает мне полный доступ ко всему, что находится внутри символа View, и это здорово, и все сценарии временной шкалы в View по-прежнему работают.

Проблема в том, что эти 3 символа контента действительно сложны и могут быть первыми кандидатами для ссылки на свои собственные внешние классы (com.company.view.Content1 и т. Д.), Но если я попытаюсь сделать это во Flash, когда Я создаю экземпляр com.company.view.View. Я получаю сообщение об ошибке «Ошибка приведения типов: невозможно преобразовать flash.display :: MovieClip @ 20bec5e1 в com.company.view.Content1».

Так есть ли какое-то решение для этого, или мне просто нужно рассматривать мой SWC как библиотеку и создавать представление программно, используя тот же шаблон наследования для панелей содержимого, который я использую для представления? Мне бы хотелось, чтобы мой дизайнер мог обрабатывать как можно больше макетов, но с более и более сложными представлениями я не хочу, чтобы все функциональные возможности для одного представления помещались в один монолитный класс (com.company). .view.View).

Ответы [ 3 ]

1 голос
/ 17 ноября 2009

Как вы сказали, SWC - это путь. Я думаю, что столкнулся с довольно похожей ситуацией, и я рекомендую вам проверить этот вопрос . Здесь - это фиктивный проект с таким подходом.

Кроме того, если это может ускорить время разработки, я сделал это крошечное расширение , которое объявляет экземпляры stage, инициализирует их и помещает в буфер обмена, чтобы вы могли добавить это в связанный класс. Все, что вам нужно сделать вначале, это настроить схему именования на панели флэш-памяти, затем все, что вам нужно после послесловия, - это кнопка «Создать».

Надеюсь, у вашего дизайнера есть настройка SVN. Дизайнеры ненавидят SVN! Вы можете обмануть их чем-то, что выглядит мило на Mac, как Versions или Cornerstone .

Гудлак!

0 голосов
/ 23 ноября 2009

При загрузке клипов во время выполнения вся информация о классе теряется. это корень вашей проблемы. В таких случаях я успешно использовал следующую технику . Эта техника помогает в загрузке фильма и восстановлении информации о классе. Грант Скиннер подробно рассказал об этом некоторое время назад, и это справедливо и для приложений с чистой флэш-памятью, хотя статья рассказывает о Flex.

0 голосов
/ 23 ноября 2009

Ваши классы com.company.view.Content1 расширяют MovieClip? Если нет, их нельзя добавить на сцену, и Flash выдаст эту ошибку.

...