Приятное программирование: SWC + FlashDevelop
Когда сидишь каждый день на форуме и заглядываешь в почти каждую тему, невольно подмечаешь частоту тех или иных вопросов от новичков. И, хоть в интернете полно подобных статей, человек, создающий такую тему, либо не может понять, что там написано, либо не хочет понять, либо не хочет искать. А может, и все это вместе.
Когда начинаешь с FlashIDE под руководством хороших и качественных уроков и книг, постепенно понимаешь, что FlashIDE - жутко неудобная среда для написания кода. А уже потом, начитавшись всякого и столкнувшись с теми или иными багами компилятора, приходишь к выводу, что FlashIDE хорош только для графики и ручной анимации. И хочется чего-то другого, побольше удобства, поменьше глюков. Выбор падает на FlashBuilder или на FlashDevelop. Есть и другие, но я их опущу.
Речь сейчас пойдет об одном из способов облегчить себе процесс кодирования и эффективно использовать FlashIDE и FlashDevelop. Конечно, данная статья – мое субъективное мнение и мой личный опыт. Я даже в глаза не видел, как выглядит FlashBuilder, понаслышке знаю о MXML и прочих флексовых прелестях, поэтому мой выбор – FlashDevelop.
Традиционные действия во FlashIDE сводятся к тому, чтобы понаделать клипов, дать им более-менее вменяемые имена, понасоздавать рядом с fla кучу as-файлов и описывать действия программы во внутреннем редакторе FlashIDE. И, может быть, оно сначала и круто – это тот же блокнот со слабой поддержкой подсветки и автокомплита с хинтами. Но потом надоедает каждый раз вручную писать большую строчку типа:
И спасибо, что хотя бы ENTER_FRAME можно выбрать в появившейся подсказке. Да, это способствует запоминанию тех или иных вещей, но, согласитесь, надоедает. И вот мы в поисках бродим по интернету и смотрим, какие там у нас редакторы кода народ жалует. И, как правило, в поиске попадается либо FD, либо FB. Но, так как автор этой статьи субъективист еще тот, равно как и эгоист по совместительству, он выбирает FD, качает с официального форума последний дистрибутив, а к нему еще и FlexSDK в придачу, пока не зная, зачем он нужен. Или зная, но не особо понимая, куда его приспособить. А все потому, что новичок сначала пытается компилировать все в том же FlashIDE. Ну, немного забежал вперед предыдущим предложением… Так вот, при установке следует поставить standalone режим, дабы потом расширить свой стиль своими шаблонами для классов. И что мы делаем первым делом? Создаем проект для FlashIDE, но пишем код уже в FD, а в FlashIDE только компилируем и храним библиотеку. Прогресс налицо. А удобно, удобно-то как!
Удобно, пока не натыкаемся на какой-нибудь баг компилятора. Ну, мало ли, всякое бывает. После вырванных волос и перечитанных книжек-уроков, где все работает, а у нас - нет, прикручиваем FlexSDK к FD, создаем проект на чистом as3 и начинаем думать, как сделать так, чтобы компилятор брал графику. И вообще, откуда он должен догадаться, что такое вообще нужно сделать? Выхода два: можно вшить swf, скомпилированный в FlashIDE, но можно поступить элегантнее, на мой взгляд – swc. Что же это такое и зачем оно? А это, по сути, архив с нашей графикой, с нашими клипами. А всего-то нужно нарисовать нужные клипы или добавить картинки/звуки в библиотеку, дать им нормальные имена (я практикую суффиксы, типа ClassMC или ClassBitmap). После чего нужно зайти в настройки экспорта и поставить галочку напротив Export SWC:
А затем просто скомпилировать флешку. На выходе возле fla-файла (ну или где там настроена публикация) будет лежать наш swc. Вот этот swc мы берем и переносим в папку lib проекта FD. Но и это еще не все. Нужно же как-то подключить библиотеку, а то мы просто положили в папочку и ждем чуда. Идем в наш проект в FD, ищем на панели Project наш swc, в контекстном меню выбираем AddToLibrary. Собственно, все. Классы там пустые, если хотим заставить какой-то клип прыгать на одной ноге на сцене, можно расширить класс у этого клипа своим (именно поэтому я делаю суффиксы именам классов, чтобы потом использовать такое же название, но уже без суффикса, у класса-поведения). Графика наследуется, поведение напишется.
Вуаля!
Приложение к статье
Всего комментариев 27
Комментарии
14.12.2010 22:47 | |
Название темы не отражает сути вопроса. =) Спасибо, можно будет сослаться, если что.
|
14.12.2010 23:29 | |
Замечательная статья.
Хотелось бы только ещё инструкцию, как пошагово прикрутить флекссдк в фд. |
14.12.2010 23:44 | |
Ах, да. Это новые фичи фд, я о них забыл. Про прикручивание тоже невкурсе.
Наверное, всё таки InteractiveObject. Толку от closeButton иначе нет никакого. |
15.12.2010 00:25 | |
КорДум
Приятная информация! Спасибо, обязательно попробую. gloomyBrain Спасибо за подсказку! |
15.12.2010 00:30 | |
Пока статью толком не читал, но у меня вопросы по оформлению.
1. Что заставляет выкладывать изображение на сторонних ресурсах, а не на самом форуме, прям в статье? 2. Опять не фига не понятно о чем будет идти речь, пока не прочтешь пару абзацев. А вдруг оно мне не надо? Как это понять? |
|
Обновил(-а) iNils 15.12.2010 в 00:33
|
15.12.2010 01:38 | |
Я подумал об этом же, удобно.
|
15.12.2010 10:16 | |
Зачем все программно? Что за крайности? Должна быть золотая середина.
Различного рода вложенности нужно просто группировать, и по необходимости эти группы линковать с классом. |
15.12.2010 11:16 | |
А чем это лучше?
|
15.12.2010 11:20 | |
Ну а как удобнее обращаться к свойству объекта?
this["someProperty"] или this.someProperty? upd: И в самом классе показать какие у него есть переменные, а не держать это в уме или еще где. |
|
Обновил(-а) udaaff 15.12.2010 в 11:22
|
15.12.2010 11:23 | |
Мне - вторым способом. И при установленной галочке он становится возможным. Без нее, по идее, так не получится.
|
15.12.2010 11:28 | |
Под this["someProperty"] я подразумевал super.getChildByName("closeButton").
Или при получении доступа к дитенку через getChildByName() есть какой-то плюс? |
15.12.2010 11:45 | |
Объявляет неявно, а я говорю про то, что лучше объявить их в явном виде в классе =) Сорри, если ввел в заблуждение =)
|
15.12.2010 16:07 | |
Я знаю об этой галке, она у меня стоит где попало. Всю графику собираю через getChildByName, в случае если дизайн готов. Программно, если он отрисовывается "при мне".
|
16.12.2010 18:40 | |
Опять советы расширять кастомные классы от графики.. что, все так делают??
|
16.12.2010 19:07 | |
Нет. Я композицией делаю - внутри моего класса создаю экземпляр графики и добавляю в себя.
|
16.12.2010 19:31 | |
16.12.2010 21:32 | |
Цитата:
Опять советы расширять кастомные классы от графики.. что, все так делают??
|
18.12.2010 10:25 | |
"Метод Тигер-а", которым пользуемся и мы, позволяет не загружать лишнюю графику, то есть, подгружать графику только по требованию, но тут нужен уже *.swc, а *.swf
|
18.12.2010 13:08 | |
Не всегда графика должна загружаться "по требованию". Некоторая графика должна быть сразу вшита в клиент.
|
Последние записи от КорДум
- Basic authentication и GET/POST запросы (20.03.2013)
- SOAP и Flash (19.12.2012)
- Бинарные сокеты в AS3. Часть 3 (13.07.2012)
- Бинарные сокеты в AS3. Часть 2 (13.07.2012)
- Бинарные сокеты в AS3. Часть 1 (13.07.2012)