Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Ассоциирование символа вставляемого клипа с пользовательским классом средствами ant (http://www.flasher.ru/forum/showthread.php?t=113448)

LokiDi L0ck 29.06.2008 00:16

Ассоциирование символа вставляемого клипа с пользовательским классом средствами ant
 
1) Создаём в flash cs3 - Flash File.
Далее создаём символ (MovieClip), убираем его с Stage (оставляем только в библиотеке).
Щёлкаем правой кнопкой мыши по MovieClip'у, выбираем Linkage, вбиваем имя класса TestMovie (в base class: flash.display.MovieClip). Жмём ок.
Далее File -> Publish (сохраняем swf под именем MovieLib).
Закрываем flash cs3.

2) Открываем например fdt. Создаём проект. Чтобы ассоциировать свой класс с нужным нам символом, пишем:

Код:

[Embed(source="MovieLib.swf", symbol="TestMovie")]
public class MyTestMovie extends MovieClipAsset {}



Вопрос заключается в следующем. Можно ли включить MovieLib.swf в конечный swf проекта при этом указав, что символ TestMovie должен быть ассоциирован с таким то классом в проекте средствами ant?
Т.е. в итоге избавиться от тега Embed в коде самого класса.

В документации: http://livedocs.adobe.com/flex/3/html/ просмотрел разделы о компиляторах, их опциях, и flex ant. Ответа не нашёл.

silin 29.06.2008 13:53

не удобнее ли компилить MovieLib в SWC с уже нужным классом этого символа, и подключать этот swc как библиотеку, зачем обязательно вытягивать Embed'ом из swf ?

LokiDi L0ck 29.06.2008 14:29

Код:

зачем обязательно вытягивать Embed'ом из swf ?
Флэшер создаёт анимацию - библиотеку с символами movieclip'ов. После чего отдаёт swf кодеру.
Кодер же создаёт управление анимацией символов.

wvxvw 29.06.2008 14:31

Недавно тоже пытались с чем-то похожим разобраться. Я вобщем-то тоже за SWC, но логику понять можно - т.е. не хочется, чтобы дизайнер был зависим от программера (в случае с SWC дизайнеру для компиляции нужны классы связаные с его клипами, или, наоборот, програмеру прийдется компилировать SWC самому из Флеш ИДЕ) недостатки понятны. Единственное, что мне приходит в голову по этому поводу - использовать скинирование. Т.е. нигде не привязывать логику класса к графике. Т.е. самый простой случай: есть класс Кнопка: но он не привязан к клипу в библиотеке, просто при компиляции он вытаскивает из библиотеки 3 мувика "овер", "аут" и "пресс" и использует их для отображения разных состояний. Таким образом дизайнеру не нужен класс Кнопка и он может сам спокойно все скомпилировать, и програмеру не нужно компилировать графические библиотеки. Недостатки - лейауты прийдется делать програмеру (т.как у дизайнера не останется возможности визуально скомпоновать кнопки на форме - у него просто не будет "кнопки").

LokiDi L0ck 29.06.2008 14:41

wvxvw, не вижу проблем.
Дизайнер может нарисовать мувиклип кнопки, а далее на 4ёх кадрах придать ей разные формы и цвет. Каждому кадру приписать соответствующий label (например mouseover, mouseclick и т.д.).
Прогер же спокойно цепляет символ кнопки, например так:

Код:

[Embed(source="ButtonsLibrary.swf", symbol="MyButton")]
И потом описывает действия:

Код:

[Embed(source="ButtonsLibrary.swf", symbol="MyButton")]
class MyButton extends MovieClipAsset {
   
    //onMouseOverListener подписывается под события мыши
    private function onMouseOverListener(e : MouseEvent) {
        gotoAndStop("mouseover");
    }

    //и так далее
}

Единственная связь между дизайнером и прогером: дизайнер должен сообщить прогеру о именах label.


=============
В связи с чем меня и заинтересовало, можно ли обойтись без тега Embed и все подобные связи описать в build.xml.

wvxvw 29.06.2008 15:05

Читайте внимательнее: либо дизайнер не сможет расположить кнопки на форме (т.как то, что он выложит на форму не будет инстансом класса Кнопка - потому что программер назначил ему этот класс), либо ему нужен будет класс Кнопка, для того, чтобы он мог выложить на форму именно кнопку, а не клип из 3х кадров.

LokiDi L0ck 29.06.2008 15:14

Ок. Понял. Хотя и это можно обойти, в зависимости от требований проекта)

Что насчёт вопроса темы?)

fljot 29.06.2008 16:39

Цитата:

Сообщение от wvxvw (Сообщение 748614)
либо дизайнер не сможет расположить кнопки на форме (т.как то, что он выложит на форму не будет инстансом класса Кнопка - потому что программер назначил ему этот класс)

как раз может. например, дизайнер связывает кнопки с несуществующими классами Button1 & Button2 и кладёт их на форму с классом Form куда считает нужно. далее программер пишет
Код:

package
{       
        [Embed(source="library.swf", symbol="Button1")]
        public class Button1 extends FormButton {}
}
...
package
{       
        [Embed(source="library.swf", symbol="Button2")]
        public class Button2 extends FormButton {}
}

ну и класс формы аналогично. но в классе формы кнопки надо будет явно объявить, чтобы компилятор учёл вышеобозначенные классы кнопок. это вот например такой замут для "имитации" указания Base Class при компиляции в Flash IDE..

так что вопрос впринципе интересен)

wvxvw 29.06.2008 18:19

Хм... а разве Флеш не создаст автоматом класс Button1?

wvxvw 29.06.2008 21:21

ХМ... приду домой - попробую =)


Часовой пояс GMT +4, время: 19:22.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.