Рабочий процесс ActionScript 3 с использованием SWC со связанными внешними классами
Я работаю над очень насыщенным графикой приложением, которое использует контент из множества разных 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 ответа
Как вы сказали, SWC - это путь. Я думаю, что столкнулся с довольно похожей ситуацией, и я рекомендую вам проверить этот вопрос. Вот фиктивный проект на этот подход.
Кроме того, если это может ускорить время разработки, я сделал это крошечное расширение, которое объявляет экземпляры stage, инициализирует их и помещает в буфер обмена, чтобы вы могли добавить это в связанный класс. Все, что вам нужно сделать вначале, это настроить схему именования на панели флэш-памяти, затем все, что вам нужно после послесловия, это кнопка "Создать".
Я надеюсь, что у вашего дизайнера есть настройка SVN. Дизайнеры ненавидят SVN! Вы можете обмануть их чем-то, что выглядит мило на Mac, как Versions или Cornerstone.
Удачи!
Ваши классы com.company.view.Content1 расширяют MovieClip? Если нет, их нельзя добавить на сцену, и Flash выдаст эту ошибку.
При загрузке клипов во время выполнения вся информация о классе теряется. это корень вашей проблемы. В таких случаях я успешно использовал следующую технику. Эта техника помогает в загрузке фильма и восстановлении информации о классе. Грант Скиннер подробно рассказал об этом некоторое время назад, и это справедливо и для приложений с чистой флэш-памятью, хотя в статье рассказывается о Flex.