Рабочий процесс 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. Это дает мне полный доступ ко всему, что находится внутри символа просмотра, и это здорово, и все сценарии временной шкалы в представлении по-прежнему работают.

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

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


person ken.dunnington    schedule 17.11.2009    source источник
comment
Вы используете Flash Builder (как в новой версии Flex Builder) или Adobe Flash®?   -  person greggreg    schedule 17.11.2009
comment
У меня такие же проблемы, поэтому я чувствую твою боль. это будет частично исправлено в новых версиях flash builder (новое, менее запутанное имя) и flash authoring (на этот раз cs5). а пока это довольно хлопотно.   -  person grapefrukt    schedule 17.11.2009
comment
Я использую Flash Builder 4 Beta 2. @grapefrukt: интересно, как это исправить? Мне это почти кажется проблемой языка / формата?   -  person ken.dunnington    schedule 19.11.2009


Ответы (3)


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

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

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

Удачи!

person George Profenza    schedule 17.11.2009
comment
Джордж, спасибо за ссылку, я на самом деле читал ваш пост раньше и столкнулся с той же проблемой «общего пути к классам», что и вы, так что это была невероятно полезная информация! К сожалению, моя проблема сложнее, потому что я не могу ссылаться на вложенные пользовательские классы. Я могу связать один символ в библиотеке с настраиваемым классом, экспортировать SWC и получить функциональность. Но если внутри этого символа есть другой символ, скажем, пользовательская кнопка с аналогичным образом связанным классом, кнопка не будет напечатана в ActionScript. Я думаю, что решение состоит в том, чтобы упростить FLA, чтобы ничего не было вложено, и собрать мой макет в скрипте. - person ken.dunnington; 19.11.2009
comment
Ой, забыл добавить, я всегда заставляю своих дизайнеров использовать SVN :) - person ken.dunnington; 19.11.2009
comment
Это что-то вроде курицы и яйца. Если вы создадите ссылку на классы во флэш-памяти и скомпилируете swcs, вы столкнетесь с ошибкой Type Coercion. С другой стороны, если вы используете классы as3 по умолчанию, сгенерированные flash с помощью swc, и вы подклассифицируете это: вы получаете ничто. Swc содержит предварительно скомпилированные классы, которые действуют странно при создании подклассов. Как вы сказали, продвижение вперед может быть разделено. Возможно, у каждого компонента есть свой swc, и переделайте некоторые анимации меню с помощью кода. Adobe, кажется, рассматривает интеграцию с флэш-памятью в основном, когда дело доходит до фреймворка :( а как насчет основ? - person George Profenza; 20.11.2009

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

person Aaron Franco    schedule 23.11.2009

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

person vijayshan    schedule 23.11.2009