Просто об ActionScript 3. Часть 1

«…первая — это Библия, написанная нашим Господом, вторая — «Происхождение видов», написанная трусливым пропойцей Чарльзом Дарвиным». м/с «Симпсоны» о противостоянии дарвинизма и креационизма.

Пять лет назад в момент появления ActionScript 3 (далее преимущественно будем использовать аббревиатуру AS3) было очевидно, что мы сталкиваемся с чем-то выходящим за рамки обычного и привычного Flash. Так оно и оказалось, потому как фактически одновременно появился бесплатный набор инструментария (фреймворк) Flex 2, сочетающий в себе сразу два свежеиспеченных языка от Adobe: ActionScript 3 и MXML.

Конкуренция по RIA

Нужно сказать, что резкого перехода на новые технологии не получилось, хотя у корпорации для его проведения имелось множество активов. К тому времени (2006 год) уже всем стала понятной парадигма RIA (Rich Internet Application), предложенная Macromedia еще в 2002-м. RIA также часто именуют «толстым» клиентом» — в клиентской части пользователям дается гораздо больше возможностей, нежели простое отображение информации по запросу («тонкий» клиент»). И в области продвижения RIA Adobe является не единственной. У Flex есть несколько весомых конкурентов в плане создания RIA-приложений — это JavaFX, OpenLaszlo и Silverlight (от Microsoft). В ближайшем будущем может состояться серьезная конкуренция с HTML5, но при этом стоит подчеркнуть слово «может», поскольку сам HTML5 внедряется довольно медленно, поддерживается неравномерно, а некоторые функции, такие, например, как запись того же аудио/видео на сервер задекларированы, но отключены. Хотя именно этот момент (конкуренции с HTML5) сейчас решается довольно странным образом, потому как со стороны сред разработки для создания Flash/Flex-приложений сейчас больше реализуется взаимодействие с этим стандартом, а в некоторых случаях и трансляция кода в HTML5.
Отличительной особенностью Flash/Flex-реализации от Adobe является то, что все базируется на воспроизведении в рамках Flash-плеера, который установлен на 98% компьютеров, подключенных к Интернету. При этом имеется практически абсолютная переносимость, потому как нет зависимости от браузеров или операционных систем.

Также стоит сказать, что на сегодня это чуть ли не единственный вариант полноценной реализации программирования клиентской части для веба в IDE (интегрированных средствах разработки) на уровне компилируемого, а не интерпретируемого кода — любая анимация, созданная во Flash, либо программа, написанная на нем же в ActionScript, преобразуется в байт-код, который и воспроизводит виртуальная машина (Flash Player). В представленной вашему вниманию серии мы не будем касаться технологии AIR (Adobe Integrated Runtime), потому как информации для изучения и так будет много.

Стандартная библиотека UI-компонент Flex Builder 3


Так Flex или Flash? Flash

В целом, сегодня Flex лучше воспринимать как один из способов создания Flash-приложений, более понятный программистам и дающий им широкий спектр возможностей. В качестве базовой IDE (интегрированной среды разработки) компанией предлагался Flex Builder, по своей структурной концепции более близкий к профессиональным визуальным средам программирования уровня Visual Studio или Delphi, в которых имеется стандартная библиотека UI- компонент. При этом Flex-проекты (назовем их так чисто условно) можно делать в самом пакете Adobe Flash, а также в нескольких сторонних программах.

Так Flex или Flash? На самом деле, обсуждаемый вопрос довольно интересен и с той точки зрения, что сейчас произошел небольшой откат, а именно, популярная среда разработки под Flex — Flex Builder — в четвертой версии переименована во Flash Builder. Это указывает на то, что базовой технологией является все-таки Flash. И, в принципе, подход правильный, потому как Flex, по существу, как было сказано выше — это просто один из способов создания Flash-приложений, который развился из ситуации, существовавшей до этого во Flash IDE.

О чем речь? В начале 2000-х к пакету для создания 2D-анимации (Flash) начали активно присматриваться программисты, на его базе стали разрабатываться первые игры и интерактивные приложения, таким образом, у программы появился новый и очень активный пласт пользователей. Также со временем выработался новый специфический стиль программирования в Adobe Flash, где для написания кода использовался первый (или, как иногда говорят, «нулевой») фрейм/кадр временной шкалы. На самом деле это не совсем удобно, также программистам обычно не нужна панель анимации и так далее, Adobe Flash как IDE воспринимается большинством из них как нечто громоздкое. То есть написание кода там идет как некая надстройка. В рамках большинства Flex IDE программистам предлагался уже вполне стандартный для них вариант — редактор кода и библиотека UI-компонент без привязки к анимационной части.

Таким образом, понятия «Flex» или «Flex IDE» мы будем в дальнейшем использовать условно, говоря о кодировании на ActionScript3 с использованием библиотек UI-компонент и при желании MXML в средах, подпадающих под общую концепцию стандартного программирования. А под «Flash IDE» будем подразумевать конкретно среду разработки Adobe Flash. Это чтобы вы не запутались.

Flex Builder 3 базируется на Eclipse, при этом разработчикам доступны два режима: редактора кода и визуального редактора дизайна


Несколько вводных слов о MXML

Чтобы не бросаться в дремучие дебри, как это делают некоторые авторы, скажем, что MXML в простом случае стоит воспринимать как декларативный язык разметки пользовательского интерфейса. Многие его сравнивают конкретно с XML, но я бы для простоты понимания сравнил бы его с HTML, то есть вы просто указываете расстановку элементов и можете внедрять вставки из кода на AS3. Кстати, и сам XML родился на базе синтаксиса HTML. При всем этом можно отметить довольно интересную специфику для Flex’а, а именно, приложения можно создавать как с использованием MXML, так и вовсе без него, описывая все в AS3. MXML удобнее, поскольку минимизирует код.

Также скажем, что в руководствах по Flash IDE вы не найдете ни примеров кода, ни ссылок на MXML — этот язык там не применяется. Программирование с его использованием широко описывается для Flex’а.

Adobe Flash является одной из самых развитых сред создания современных приложений, но для программистов она довольно громоздка


О «дарвинизме и креационизме»

Эпиграф к этой статье был выбран неспроста, поскольку довольно хорошо иллюстрирует сложившуюся ситуацию с внедрением Flex’а.

Flex SDK 2 и Flash CS вплоть до CS4 не показывали явных преимуществ от использования ActionScript3, потому как все находилось в процессе развития и доработки. Но при этом, если выражаться простым языком, «столбился» рынок технологий реализации RIA-приложений, конкуренция на котором, как вы видите, есть, и довольно сильная.

Поэтому на первоначальном этапе с появлением Flex 2 необходимость освоения и применения AS3 тогда больше относилось к вопросам веры, нежели практической необходимости.

ActionScript 3 сделан очень подобным Java — это уже стандартное высокоуровневое программирование с довольно жесткой объектно-ориентированной моделью, плюс к этому добавлено множество специфических нюансов.

Переход от второй к третьей версии ActionScript нельзя назвать эволюционным, потому как сам язык изменили достаточно сильно. Все отсылки к тому, что это продолжение предусмотрено в рамках новых версий базовых языковых стандартов ECMAScript3 и частично ECMAScript4, и что так того требует время, не оправдывают таких кардинальных изменений. Дело в том, что довольно много нынешних серьезных наработок создавалось и успешно функционировало еще на AS2, который по простоте изучения можно сравнить с Бейсиком. Расширенные функции Flash API можно было встроить и в него, реализовав асинхронность «внутри».

Powerflasher FDT — коммерческая среда разработки Flash/Flex-приложений, имеющая множество шаблонов проектов


Не сказать, что значимая часть любителей программировать на базе Flash и ActionScript2 прониклась новыми конструкциями языка в третьей версии: практически все нужно было изучать наново, например, вместо стандартного и привычного всем button1.onPress = function () {}, в AS3 предлагается более сложная конструкция кода с добавлением Listener’а (прослушивателя) на события мыши и специальной функции для него, в которую мы и прописываем нужный код (если кому сейчас непонятно, мы потом рассмотрим все более подробно). Встроенные системные события стали одним из самых важных элементов в программировании на AS3.

В сложившейся ситуации очень грамотным шагом Adobe стала правильная оценка происходящего, и как факт во Flash IDE реализована одновременная поддержка разработки проектов как на ActionScript 2, так и на ActionScript 3.

В целом, AS3 осваивается довольно быстро, хотя для каждого из случаев требует определенных углублений в специализацию. Например, если вы делаете развитое клиент-серверное приложение, то нужно знать язык серверной части (Java, PHP и т.п.), не говоря уже о сопутствующих технологиях. Создавая игры, вы должны практически осознавать суть используемых технологий (спрайты и т.п.).

Разделение на уровне виртуальной машины

Сегодня Flash Player — это не одна, а две виртуальные машины отдельно для ActionScript 2 (AVM1) и для ActionScript 3 (AVM2, появилась в 9 версии Flash Player).

Сама технология Flash является довольно специфической для стандартного программирования, потому как плотно увязана на интеграции с вебом. Поэтому изначально для создаваемых приложений вводилось много ограничений, таких как безопасный доступ к ресурсам пользовательских ПК и так далее. И все это предусматривалось уже на уровне языка. Нужно сказать, что Macromedia, а после и Adobe довольно успешно справляются с ситуацией безопасности приложений, поэтому как факт мы практически не наблюдаем вирусов, написанных во Flash, а для интеграции приложений не требуется подписывания сертификатов. При этом даже при развитой архитектуре языка AS3 контролируется доступ к пользовательским ресурсам, например, доступ к видеокамере или микрофону пользовательского ПК только по согласию и так далее.

ActionScript 3 состоит из двух частей: основного языка и Flash API — прикладного программного интерфейса, который дает расширенный доступ к возможностям Flash Player. Подробности рассмотрим в процессе.

FlashDevelop — популярная бесплатная среда разработки Flash/Flex-приложений


Различные Flex IDE

На данный момент разработчикам предлагается чуть меньше десяти различных IDE, позволяющих создавать Flash/Flex-приложения. Думается, что их количество будет со временем расти. На сегодня мы выделим четыре наиболее популярные реализации.

1. Самой известной IDE под Flex является Flash Builder (который ранее был известен как Flex Builder). Стоит он недорого, порядка $50, при этом лицензию можно получить и бесплатно, если вы студент или преподаватель и используете эту IDE для образовательных целей. Flash/Flex Builder базируется на Eclipse, в его рамках вы можете работать в двух ключевых режимах: Source Mode для написания кода и Design Mode для создания GUI на визуальном уровне с использованием библиотеки компонент, что делает работу похожей на стандартное программирование в таких средах как, например, Visual Studio или Delphi. Режим дизайна включается только для MXML-файла, который можно рассматривать как носитель настроек визуальной части. Для разработчиков во Flash Builder имеется фактически все необходимое, включая даже такие уникальные возможности, как анализ кода, написанного на другом языке (например PHP), и генерация на его базе AS3 или Flex-кода.

2. Также вы, конечно же, можете использовать обычный Adobe Flash CS. Работа над проектами происходит стандартным для этой среды образом, при этом в создании визуальной части MXML не нужен, все настройки предусматриваются на уровне FLA-проектов. Этот вариант более удобен с точки зрения создания уникального дизайна тех же UI-элементов и внешнего вида создаваемого приложения. Ситуацию с ценами на последние версии Flash CS вы можете узнать на сайте Adobe.

3. Следующей довольно интересной IDE является Powerflasher FDT — довольно мощная и популярная коммерческая среда (AS, MXML и haxe), поддерживающая все современные веяния. Стоит, прямо скажем, не дешево — $699. На сайте http://www.fdt.powerflasher.com вы можете скачать пробную версию, которая полностью функциональна в течение 30 дней. Использование Powerflasher FDT удобно тем, что в данной среде имеются специально заготовленные шаблоны различных проектов с различными вариантами UI (имеется база собственных компонент).

4. FlashDevelop (http://www.flashdevelop.org) — одна из самых популярных IDE по той причине, что она бесплатна. Стоит сказать, что дополнительные функции реализуются в том числе и за счет подключения плагинов, но при этом есть и один небольшой минус, а именно, в новых версиях плагины от старых обычно не поддерживаются. А поскольку все разработки для FlashDevelop ведутся на добровольной основе, сами плагины могут и не продолжать развиваться. Поэтому, набрав определенный арсенал средств для конкретной версии, пользователи с большой осторожностью идут на обновления, что оправданно.

Помимо этого вы можете встретиться с различными модификациями либо комбинациями, связанными с интеграцией Flex и Eclipse, популярны и варианты использования Flex совместно с JetBrains Intllij Idea и Apache Maven (Flexmojos).

В целом, стоит отметить, что опытным Flash/Flex-программистам достаточно иметь удобный редактор кода, возможность отладки и компиляции программы в swf-файл, а для просмотра и сверки результатов используется тот же Flash Player. Поэтому выбор данных четырех IDE происходил по принципу «чуть лучше, чем редактор кода, отладчик и компилятор».

Например, FlashDevelop живет и развивается благодаря большой популярности среди пользователей, но вместе с тем, можно назвать порядка пяти схожих IDE, в которых развития как такового не наблюдается.

Подытожим

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

На данный момент ActionScript 3 можно назвать одним из самых актуальных языков программирования. Конечно, «интересными» выглядят последние новости, связанные с отказом поддержки интеграции Flash’а в популярные мобильные платформы от Apple и анонсируемые от Microsoft. Но вместе со всеми этими «хай-тек-событиями» высокого порядка, напоминающими битву титанов, на пользовательском уровне все более понятно и обыденно. Например, если перед вами стоит задача создания видео- или аудиочата, то наиболее удобные, а в некоторых случаях и единственно возможные для реализации являются технологии Flash. И таких областей довольно много.

Кристофер http://itcs.3dn.ru


Компьютерная газета. Статья была опубликована в номере 38 за 2011 год в рубрике программирование

©1997-2024 Компьютерная газета