Последняя часть моего обзора Adobe Flash CS3 Professional. На сей раз для программистов.
Про ActionScript 2 рассказывать я не буду, там все тоже самое, что и в Flash 8.
Поговорим об ActionScript 3. Писать код в кадрах вы, конечно, можете (кстати, на клипах писать код уже нельзя), но AS3 — язык с использованием классов, поэтому писанину в кадрах я намеренно отбрасываю из данного обзора (для быстрого тестирования чего-то можно и в кадре тестовый код написать).
Итак, редактор кода:

Он просто вчистую проигрывает даже редактору во Flex Builder. Из нового: можно сворачивать куски кода (выбранные или между фигурными скобками). Также можно комментить одной кнопкой кучу кода и также быстро его раскомментировать.
Собственно, все
Автокомплита как такового нет. Я очень удивился, когда в выпадающем списе обнаружил класс adobe (на скриншот подсказка почему-то не попала).
В общем, те, кто пишет код во Flex Builder, Flash Develop, продолжайте там писать.
Проверяем работу с ошибками в коде:

Что ж, ну это конечно лучше, чем во флексе «Ой, ошибка! Где — не знаю.».
Едем дальше, к компонентам. Т.к. выяснять, почему глючит компонент, приходится путем просмотра сорса этого компонента, то Adobe тут не подвел и выложил сорсы:

Что-нибудь поменять, конечно можно, только вот компоненты уже скомпилированные, а исправлять их косяки хаками, которые проходили в AS2 не выйдет, т.к. мудрые индусы повесили приватные флаги свойствам. Хотя, внешне код выглядит прилизанным и с комментариями, что есть хорошо.
Список компонентов:

Внешне какой-то симбиоз старых и флексовых компонентов. ComboBox и List вообще просто страшные.
Каково было мое удивление, когда по двойному клику открылось редактирование этого чудесного компонента!

Добрый Adobe дал возможность менять внешний вид компонентов. А заодно, судя по всему, и без особых проблем наследоваться от их классов. Однако мое редактирование класса ComboBox ни к чему не привело. Ну да ладно. Определенно, возможности по редактированию убогих внешне компонентов есть и это радует.
Дебаггер:

Я не имею привычки пользоваться этим приспособлением, но здесь явно новый дебаггер. Для него даже выделили целый пункт в меню:

В первом обзоре я уже писал про настройки AS3 в свойствах Publish, поэтому рассказывать о них не буду.
Настройки экспорта:

Имеем возможность указать базовый класс нашего объекта.
Ну и наконец, об обещанном пункте Copy Motion as ActionScript 3.0:

Вписываем имя клипа, к которому будет применен наш Motion, затем, вставляем полученный код в Actions:

Вуаля, наш клип с заданным именем воспроизводит нашу анимацию посредством ActionScript. Данный инструмент позволяет дизайнеру делать сколь угодно сложные анимации, а программисту легко их превратить в код. Причем, мы можем использовать внешние XML-файлы для создания такой анимации!
На этом хотелось бы завершить обзор Flash CS3 и подвести итоги.
Принципально нового Adobe не внес в новый продукт, все, что мы получили, было давно ожидаемо, но многие вещи так и остались нереализованными. Программисту, не работавшему с AS3 новый язык нужно будет изучать и отвыкать работать с кадрами. Для многих новая версия языка и общая организация работы будет большим шагом вперед. Но, к примеру, для меня это не ново, а добавленных фич довольно мало. Но с этим продуктом вполне можно уже сейчас работать и создавать проекты. Вопреки ожиданиям, работы с Apollo нет.
Другие части обзора:
Обзор Adobe Flash CS3 Professional — Часть 0. Введение.
Обзор Adobe Flash CS3 Professional — Часть 1. Дизайнерам.
Привет
Объясни, что ты имеешь ввиду, когда говоришь: ‘ужно будет изучать и отвыкать работать с кадрами’?
Все равно код должен находиться в кадре. Ты имеешь ввиду, что в нескольких кадрах, а не в одном?
Код должен находится во внешнем as-файле, в классе тобишь. Во fla больше нет кода. Совсем.
в этом смысле – да.
Разработчику надо вообще отвыкнуть строчить код в fla, все, fla — не место для кода. Там можно писать, если нужно потестить кусок кода, но не более.
ну ты же понимаешь, что это условность. все равно код в итоге в кадре компиллится – т.е. из файла инклудится
Откуда такая уверенность, что код именно в кадре компилится? Есть референс формата? Если так, то забавно, какой кадр содержит код у Sprite?
__etc
Если в флексе по ошибке клинкуть дважды, то ты очутишься там же если бы ты выбрал Go to source в флэше
Ну а насчет компонентов, как бы грустно это не было, но человеческого скинирования нету ни где.
Тут дело не в качестве кода, а в том что человек который должен придумать гениальную идею еще ее не придумал, но будем надеятся что он хотя бы родился и закончил универ =)
Nirth, когда вываливается эксепшн в дебаге билдера, никакой возможности перейти на место ошибки нет. А то, что флекс парсит на лету код, не всегда отлавливает ошибки.
А скинирование, ну, это все же лучше, чем в восьмерке и вопросов меньше.
AFAIK, Флеш СS 3 компоненты писали не индусы.
Не понимаю, зачем всех программеров, результатами работы которых мы не довольны называть индусами.
Это имя нарицательное?
Писали или нет, первые компоненты «ровностью» не отличались. Надеюсь, эти не будут такими кривыми (во всяком случае, код приведен в порядок, что есть хорошо).
Кривые компоненты были только в восьмерке=)
В Флекс 1.5 и 2 они нормально работали (относительно скажем СВИНГА или НЭТа)
А вот то что у тебя флекс не показывает строку где ошибка это странно у меня работает у тебя 2.0.1?
2.0.1 да, если вывалился эксепшн, то понять, где ошибка, можно только по своим последним действиям.
Pingback: Garbage Collector » Архив » Два новых обзора Adobe Flash CS3 Professional
На самом деле в AVM2 все является классами. Причем настоящими, а не имитацией, как в AVM1. И код в кадрах просто компилится в класс, наследующий от класса фрэйма. Примерно так.
Ну а насчет революционности… AS3 и AVM2 и есть революция. Вполне реальная.
Кстати, там дока есть? И есть ли ссылка на livedocs?
Дык для этого надо пользоваться именно тем, про что ты написал:
И запускать не Run As…, а Debug As…
У меня и не было сомнения в этом. Код не хранится в кадрах in fact, даже если там как бы написан. Однако больше писать его там лично я не буду.
Всегда так и запускаю, только вот когда вываливается эксепшн, у меня просто в окне Debug вываливается, мол, поток остановлен и все тут. И не всегда показывает, куда нужно. Впрочем, не суть, то, что в CS3 мне показалось более наглядным (можете кидать в меня тапки, если хотите
). Само наличие этого — уже отличие от Flash 8.
В смысле документация? Да, я про неё написал в нулевой части обзора, там все есть. Частично это флексовый хелп (раздел Programming ActionScript 3.0), плюс хелпа по компонентам, по утилам и специфичным для CS3 вещам. В общем, хелп на уровне, как всегда и было.
Мда… Я разочарован
Так надеялся, что будет среда в которой и рисовать и кодить можно по-человечески. Короче, как всегда
Помнится, нам с восьмым плеером рассказывали про greatly improved производительность, а оказался тот же примус
Да и девятка, честно говоря, не особо импрувед, про greatly вообще речи не идет.
karen2k, класс компилится не в кадрах, а отдельным бинарным блоком в swf-файле. Когда запускается ролик и стартует первый кадр, точнее код в нем, флеш-плеер к этому времени уже знает обо всех классах, вкомпиленных в ролик.
Здесь говорится об принципе разделения дизайна и кода. Программист должен программировать (а не лазить по графике), а дизайнер – рисовать и не думать про код.
Лучше когда код сосредоточен в файлах, чем когда он разбросан по мувиклипам.
Кстати компоненты были писанны Грантом Скиннером и командой, и судя по личному опыту использования metaliq, должны быть вполне на уровне:
http://www.gskinner.com/blog/archives/2007/04/flash_cs3_compo.html
Слушай а не поделишься сорсами компонентов
А то пока наша купленная версия приедет…
Могу, конечно. Выложу сегодня вечером. Не знаю насчет fla-шек с ними, т.е. классы-то есть, а как там с элементами, я не знаю…
Я имел ввиду, что в доках к Flex и Flash есть на каждой страничке ссылка на livedocs, на которой могут быть добавления и комментарии. Вот и меня интересует ссылка на livedocs от CS3, которую можно получить из локальной доки. А то на сайте Adobe я не смог найти.
http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/js/html/wwhelp.htm
7thsky, сорцы компонентов выцепить сложновато
Это все сказки что нельзя писать код прямо во фреймах в 3.0.
Да и много другого о чем ты тут пишешь не соответсвует действительности.
Между прочим в емуле лежит уже виндовская версия.
Вот ты ее поюзай сначала, а потом людям морочь голову.
Свои слова нужно подтверждать доказательствами или, если хотите, пишите свой полный обзор, если сможете.
Я не говорил, что писать код в кадрах нельзя, писать вы его можете. Ваша невнимательность вас же подвела (писать код на клипах нельзя, а не в кадрах этих клипов). Но если вы живете в каменном веке — пожалуйста. Лично я иду в ногу со временем и не пишу код в кадрах.
Что касается всего остального, то мне непонятно, что в моем обзоре не соответствует действительности. И, если есть контр-аргументы, я с удовольствием выслушаю.
Прошу заметить, что я не писал обзор всех возможностей вообще Flash, я писал только о том, что появилось нового со времен восьмерки, прямо сравнивая интерфейс двух программ. Особенно удивляют вообще сами по себе подобные заявления в том, что мой обзор не соответствует реальности. По вашему, я из головы взял CS3, нарисовал скриншоты и написал чушь, что ввести в заблуждение людей? Вам не кажется, что ваше заявление выглядит глупо и нелепо, нет?
И, если не нравится — не читайте. Я пока не видел других обзоров CS3, тем более опубликованных раньше моего. А уж что касается версий Windows/Mac, то я очень сомневаюсь, что версия под Windows имеет какие-то отличительные особенности от версии под Mac. К тому же, обе версии у меня есть, сравнивать их бессмысленно — они одинаковы.
Пожалуйста, вот конкретно…
Ты пишешь про индусов..
/*
Что-нибудь поменять, конечно можно, только вот компоненты уже скомпилированные……
*/
На самом деле:
- ко всем компонентам есть доступ для редактирования
Что ты на это скажешь?
Скомпилирован код в swc (хотя и его можно перекомпилировать). Элементы скинирования не скомпилированы, они компилируются в проекте. Неужели это сложно понять? Просто отредактировать код не получится, я об этом писал.
А разархивировать swc обычным winrarom не пробывал,потом прогнать через Sothink SWF Decompiler.
В 8 версии так получалось делать
Ну начнем с того, что пока декомпиляторов девятки я не видел, да и неправильный это подход. Я с этим не разбирался (да и врядли мне понадобится это), компилировать заново компоненты — заранее обрекать себя на несовместимость проекта при работе с разных машин, не говоря уже о том, что отдавать проект в руки другому человеку.
Соглашусь, код в кадрах – плохой стиль флэш-разработки. На клипы вешать – вообще хуже некуда. Правильно что запретили.
Но по поводу кадров – готов поспорить – вызывать методы класса (ассоциированного с клипом) из кадра очень удобно. Например, есть таймлайн с какой-то анимацией, которую рисует дизайнер-аниматор. И в какие-то моменты необходимо что-то активировать (например, какие-то звуковые функции, эффекты и тп.). Я говорю дизайнеру – когда эта штука приедет сюда, в кадре пишешь такое слово, когда уедет – такое. Дизайнеру побарабану что да как там спрограммировано – он просто знает что он это напишет в этом кадре и всё заработает.
При этом нет никакой жесткой привязки ни к номеру фрейма ни к коду – всё просто, наглядно и в таймлайне.
Если есть более элегантное решение – предложите.
Всё зависит от конкретного проекта. Можно написать класс, отслеживающий конкретный кадр и выполняющий заданное действие.
Дык, проблема просто сводится к тому, чтоб обозначить кадр заданным действием. Причем так наглядно, чтбы дизайнеру надо было сделать минимум движений мышкой – иначе он напутае чтонть и начнутся косяки.
Дизайнер может обозначить действия, как ему нужно. Задача программера — переделать и сделать правильно, с учетом просьб дизайнера. Дальше дизайнера уже не касается ничего, что он делал.
Если разрабатывается “полукоробочное” решение – решение посути для дизайнера – я имею ввиду не того кто рисует дизайн, скорее аниматора – того кто рисует анимацию, но не владеет программированием, либо совсем не вдается в подробности работы системы – уже должен быть работающий движок, который
в дальнейшем просто “обрастает” графикой, анимацией и т.п. И чтобы аниматор не загружал свой мозг лишними проблемами, а занимался исключительно творчеством, всякие системные вещи хорошо бы свести к каким-то наглядным, тупо понятным командам или образам…
Хороший обзор, спасибо. Если честно многое не понял