Происхождение ActionScript (скриптового языка Flash MX), стандарт ECMA-262 и его отношение к ActionScript. Сравнение ActionScript, JavaScript, Java и С++, рассматриваемых как алгоритмические языки. Примитивные типы данных как типы "только для чтения". Объектные типы данных. Подробный разбор поведения типа Number. Правила преобразования (конвертации) типов при выполнении операций. Способы получения подсказки по объектам встроенных типов. Операторы, стандартные для С-подобных языков. Специфические операторы, в том числе оператор строгого равенства (неравенства). Как операторы работают со строками. Таблица приоритетов операций. Особенности работы стандартных (для С-подобных языков) управляющих конструкций. Специфичные для Flash MX управляющие конструкции. Включение файлов, директива #include. Стражи включения. Методы отладки во Flash MX.
SWF-файлы исполняются Flash Player-ом. Flash Player существует в виде плагина к веб-браузеру, а также как самостоятельное исполняемое приложение (standalone). Во втором случае возможно создание исполняемых exe-файлов (projector), когда Flash Player включается в swf-файл.
С помощью ActionScript можно создавать интерактивные мультимедиа-приложения, игры, веб-сайты и многое другое.
Flash-технологии, или, как их еще называют, технологии интерактивной веб-анимации, были разработаны компанией Macromedia и объединили в себе множество мощных технологических решений в области мультимедийного представления информации. Ориентация на векторную графику в качестве основного инструмента разработки flash-программ позволила реализовать все базовые элементы мультимедиа: движение, звук и интерактивность объектов. При этом размер получающихся программ минимален и результат их работы не зависит от разрешения экрана у пользователя - а это одни из основных требований, предъявляемых к интернет-проектам.
По сути, Flash Player представляет собой виртуальную машину, на которой выполняется загруженный из Интернета код flash-программы.
В основе анимации во Flash лежит векторный морфинг, то есть плавное «перетекание» одного ключевого кадра в другой. Это позволяет делать сложные мультипликационные сцены, задавая лишь несколько ключевых кадров. Производительность Flash Player при воспроизведении анимации в несколько раз превышает производительность виртуальной машины JavaScript в браузерах, поддерживающих предварительный стандарт HTML5, хотя во много раз уступает приложениям, работающим вообще без использования виртуальных машин.
Flash использует язык программирования ActionScript, основанный на ECMAScript.
1 мая 2008 компания Adobe объявила о начале проекта Open Screen Project (англ.)русск. (Веб-сайт проекта). Цель проекта — создание общего программного интерфейса для персонального компьютера, мобильных устройств и бытовой электроники, что означает одинаковое функционирование одного приложения под всеми перечисленными видами устройств. В рамках проекта:
В поддержку проекта и распространение платформы Flash на мобильных устройствах на данный момент выступило 58 компаний, среди которых AMD, ARM, Google, HTC, Intel, Motorola, Nokia, NVIDIA, QNX, Sony Ericsson и др.
Flash Player портирован на мобильную платформу Android, выпущены мобильные устройства с аппаратным ускорением flash-приложений (включая AIR-приложения).
Некоторые производители ПО для мобильных устройств пытаются заменить или ограничить распространение Flash на свои новые мобильные платформы:
Во Flash Player реализована возможность мультивещания на прикладном уровне.
В развитии Flash 5 произошел качественный скачок. При переходе от версии Flash 3 к версии Flash 4 ActionScript из небольшого набора операций превратился в популярный
язык сценариев. Сегодня, с выходом версии Flash 5, ActionScript явил себя вполне
сформировавшимся объектно-ориентированным языком сценариев. Редактор ActionScript
по-прежнему поддерживает удобный для начинающих разработчиков режим ввода сценариев
с помощью мыши, причем в новой версии при выборе языковых конструкций можно
использовать перетаскивание. Можно сказать, что редактор сценариев ActionScript
стал еще легче в освоении и удобнее в работе. С другой стороны, опытные программисты
получили возможность набирать тексты сценариев вручную, вводя код с клавиатуры,
как в любой традиционной среде разработки. Система Flash 5 позволяет разработчику
выбрать те средства редактирования, которые ему наиболее удобны.
Flash 5 оставляет
впечатление принципиально нового программного пакета. Редактор сценариев ActionScript
теперь работает в двух режимах. В обычном режиме при вводе сценариев требуется
двойной щелчок на именах операций либо перетаскивание необходимых конструкций
и соответствующих параметров в поле редактора с текстом сценария. Если хотите,
вы можете работать и «по старинке», щелкнув на кнопке со знаком
+ (плюс), чтобы открыть динамическое меню языковых конструкций, как это было
в пакете Flash 4. Доступ к редактору сценариев осуществляется через кнопку Show
Actions (Показать операции) в нижней части окна рабочей зоны. В системе Flash
5 поле редактора сценариев Action-Script является частью панелей Object Actions
(Операции объекта) и Frame Actions (Операции кадра); изменилось и представление
данных в редакторе. Вместе с тем новый редактор сценариев унаследовал большинство
возможностей более ранних версий, и переход к работе с новой версией программы
для опытных разработчиков не будет слишком сложным. Кроме того, теперь у вас
появилась возможность значительно увеличить размер поля редактора сценариев
(путем перетаскивания границы панели операций), что позволяет охватить весь
сценарий одним взглядом. Экспертный режим работы редактора сценариев отличается
предельной гибкостью. Вы можете набирать текст сценария вручную, как в обычном
текстовом редакторе, но при этом вам будут доступны все средства ввода операций,
имеющиеся в обычном режиме.
Однажды некий
наивный дизайнер спросил меня: «К чему мне связываться с ActionScript,
если я могу сделать все, что захочу, стандартными средствами Flash 5?
На самом деле он пользовался ActionScript, не понимая этого. Даже в простейших
операциях перехода, таких как gotoAndPlay, используются команды ActionScript.
Применение средств ActionScript в системе Flash 5 — это не один из возможных
путей, это единственный возможный путь. Если у вас возникает потребность
в использовании какой-то инструкции ActionScript, это значит, что без этой инструкции
вам просто не обойтись. Средства ActionScript всегда тесно переплетаются с анимацией
Flash, создаваемой без применения возможностей этого языка. Как-то раз в рамках
одного из проектов я нарисовал ползунок, который собирался использовать в фильме,
созданном без помощи ActionScript. Но выяснилось, что работать с этим ползунком
как с элементом управления без соответствующего сценария ActionScript невозможно,
и я сдался. Пришлось написать отдельный сценарий, обеспечивающий применение
ползунка в качестве элемента управления, и связать его с определенным кадром
фильма. Сценарии ActionScript работают в составе стандартного фильма
Flash 5, они неотделимы от неге. Средства ActionScript не дублируют и не подменяют
собой стандартные возможности Flash.
Наконец,
некоторые задачи, допускающие «традиционное» решение с помощью встроенных
средств Flash 5, можно решить намного легче и эффективнее, если использовать
ActionScript. Скажем, в большинстве фильмов Flash присутствует такая трудоемкая
и важная подзадача, как кадрирование — прорисовка промежуточных кадров при трансформации
какого-либо объекта. Во многих случаях при этом необходима точная настройка
определенных параметров движущегося объекта. Изменить значение переменной, свойства
или объекта ActionScript в этом случае намного проще, чем вручную прорисовать
все промежуточные кадры. Есть дизайнеры, которые не могут понять, каким образом
их коллегам удается реализовать на Flash-сайтах сногсшибательную анимацию, прокрутку
текста и великолепный интерактивный пользовательский интерфейс. Все дело здесь
в хорошем дизайне и грамотном применении усовершенствованных средств ActionScript.
Поскольку клиенты все чаще требуют, чтобы их сайты были «живыми»
и симпатичными, а за счет этого — часто посещаемыми и в конечном счете конкурентоспособными,
ActionScript играет в Web все более важную роль. Еще одно важное достоинство
этого языка — наличие в нем средств обеспечения связи с серверными приложениями.
Компании Macromedia удалось создать язык, который, будучи легким в освоении
и применении, вместе с тем обладает возможностями, удовлетворяющими всем требованиям
дизайнеров, и располагает средствами организации интерактивного интерфейса.
Этот текст предназначен прежде всего для пользователей системы Flash 5, желающих расширить
возможности своих фильмов за счет подключения сценариев ActionScript. Я не рассчитывал
на новичков, которые впервые столкнулись с системой Flash. Скорее этот текст будет полезен пользователям версий Flash 3 и Flash 4, желающим перейти к работе
с Flash 5 и освоить ActionScript.
Для этой
группы читателей не обязателен опыт программирования, но они должны знать особенности
пакета Flash и уметь создавать хотя бы несложные фильмы.
Кроме того, этот текст рассчитан на программистов, которые хотели бы включить язык ActionScript
в свой арсенал. Во всех языках программирования и обработки сценариев есть целый
ряд общих элементов, и ActionScript не составляет исключения. Программисты,
знакомые с языками программирования, такими как Bade или C++, а также с такими
языками сценариев, как JavaScript, с легкостью освоят и смогут применять ActionScript
наравне с профессиональными дизайнерами фильмов. Особенно легким этот переход
будет для пользователей языка JavaScript, так как обновленная версия ActionScript
во многих аспектах совпадает с JavaScript. Впрочем, я убежден, что ActionScript
превосходит JavaScript, поскольку у языка ActionScript нет такого разнообразия
версий для различных браузеров, как у JavaScript. Вы можете создавать сценарии,
которые будут одинаково интерпретироваться как системой Netscape Communicator,
так и Microsoft Internet Explorer, В отношении объектно-ориентированной обработки
данных ActionScript может дать хорошую фору языку JavaScript. Тем не менее между
этими языками есть ряд существенных различий, и разработчик обязан знать, в
чем они состоят и каким образом можно использовать сильные стороны ActionScript.
Наконец,
этот текст будет полезен пользователям языка ActionScript в версии для пакета
Flash 4. В новой версии языка практически удвоилось количество операций, система
Flash 5 снабжена совершенно новым пользовательским интерфейсом; изменился механизм
адресации, появились новые объекты, массивы, функции, операторы, а также возможность
разработки пользовательских функций. Язык ActionScript в версии Flash 5 коренным
образом отличается от предыдущей версии. Читателям, относящимся к этой группе,
я рекомендую сосредоточиться на вопросах совместимости и усовершенствования
средств языка. Как это всегда происходит при глобальных переменах, опытным разработчикам
наверняка захочется совместить новые средства, появившиеся в пакете Flash 5,
с хорошо знакомыми конструкциями Flash 4. Несмотря на то что человеку свойственно
с большей симпатией относиться к тому, что он хорошо знает, я уверен, что вы
по достоинству оцените новые возможности ActionScript, появившиеся в пакете
Flash 5, и в конечном счете откажетесь в их пользу от устаревших конструкций.
Наверняка вскоре у вас появится возможность убедиться в том, что работать над
сценариями ActionScript в системе Flash 5 легче, чем в прежних версиях этого
пакета. Язык ActionScript стал намного более мощным инструментом создания сценариев.
Если вы никогда
не занимались программированием и не создавали сценариев обработки данных, объем
информации, которую требуется усвоить, чтобы научиться работать с языком ActionScript,
может подействовать на вас угнетающе. Однако нет никаких причин, чтобы пытаться
выучить все средства Action-Script единым махом, особенно если ActionScript
— первый язык программирования, который вы хотите изучить. Передозировка знаний
опасна. Попробуйте разобраться в образцах сценариев и лишь затем попытайтесь
слегка модифицировать их, а главное, старайтесь получать удовольствие от новых
знаний. Уделяйте особое внимание таким деталям, как имена экземпляров клипов
и имена переменных, связанных с текстовыми полями; не употребляйте в качестве
имен переменных зарезервированные слова. Чтобы написать сценарий ActionScript,
не нужно иметь диплом математика. Значительно важнее, чтобы вы не пытались забежать
вперед, а продвигались в изучении ActionScript шаг за шагом. В отличие от других
языков программирования и обработки сценариев большая часть кода на языке ActionScript
содержится в коротких, несложных сценариях. Этот язык является модульным по
своей сути, поскольку сценарии Action-Script привязаны к определенным кнопкам,
кадрам и клипам.
Не нужно
смотреть ни на язык ActionScript, ни на эту книгу как на заоблачную вершину,
которую предстоит покорить, не имея соответствующего снаряжения. Это лишь своего
рода путеводитель; представленные в нем «достопримечательности»,
безусловно, стоит посетить, но вы не обязаны это делать.
Этот текст написан обычным, человеческим языком. Материал изложен отнюдь не
в строгом соответствии с жесткими рамками компьютерной и научной терминологии;
я намеренно старался избегать языка технической документации. Этот текст — беседа с читателем о том, как работать с языком ActionScript. В начале книги вы познакомитесь
с основными понятиями и принципами написания сценариев. Эти фундаментальные
понятия станут отправной точкой для дальнейшего изучения языка ActionScript.
По ходу появления в тексте новых конструкций я буду стараться иллюстрировать
их понятными объяснениями и примерами. Не сомневаюсь, что не пройдет и десяти
минут после того, как вы приступите к чтению этой книги, и вам уже захочется
создать свой собственный фильм, чтобы применить новые знания на практике. Поэтому,
прежде чем открыть первую главу, включите компьютер, загрузите Flash 5 и приготовьтесь
к практическому изучению языка ActionScript.
Почти в каждом
уроке (не считая начальных) вы найдете учебные задачи и проекты, представляющие
собой небольшие примеры фильмов с несложными сценариями. На этих примерах я
попытаюсь показать, как нужно писать различные сценарии ActionScript, и продемонстрирую
работу с различными видами данных и параметрами. Некоторые из этих проектов
носят чисто учебный характер и преследуют только одну цель — показать действие
тех или иных механизмов. Другие проекты могут использоваться как вполне реальные
прикладные программы. Большинство приложений в этой книге не содержит ничего
сложного. К числу таких элементарных задач относится, скажем, получение входных
данных через текстовое поле и изменение внутреннего представления информации,
подлежащей пересылке в базу данных на сервере. Однако в настоящей книге вы найдете
и ряд более сложных проектов, например образец фильма, где строится гистограмма
входных данных. Каждый учебный проект преследует цель оказать читателю помощь
в освоении определенных языковых средств ActionScript.
Примеры фильмов,
о которых идет речь в учебных проектах, вы можете найти на прилагаемом к настоящей
книге компакт-диске. Если вы не хотите шаг за шагом выполнять все присутствующие
в книге инструкции и не желаете создавать учебные фильмы «с нуля»,
у вас есть возможность просто открыть соответствующий
файл с расширением .FLA на компакт-диске и «разобрать» его на составные
части. Однако, набирая тексты сценариев самостоятельно, вы наверняка столкнетесь
на собственном опыте с наиболее типичными ошибками. При налинии в набранном
вручную тексте каких-то опечаток сценарий не будет работать должным образом.
Возможно, иной раз это будет вас расстраивать, но именно такой подход позволит
максимально эффективно усвоить информацию, касающуюся создания сценариев. Кроме
того, вы сэкономите время, если будете учиться находить собственные ошибки,
точно зная, где их искать. Может быть, вам придется по душе промежуточный вариант,
при котором вы будете загружать соответствующий FLA-файл в качестве библиотеки,
а затем вводить сценарии вручную. Это позволит вам избежать необходимости рисовать
графические элементы. Вы вольны выбрать тот способ работы с примерами, который
вам покажется наиболее эффективным.
В настоящем тексте используются обозначения, принятые в документации к продуктам компании
Macromedia. Исключение составляет лишь символ > , который будет использоваться
в качестве разделителя команд меню и подменю. К примеру, запись Modify >
Instance (Модифицировать > Экземпляр) означает, что вы должны сначала
щелкнуть на пункте Modify в строке меню, а затем выбрать пункт Instance в открывшемся
на экране списке команд. Клавиатурные соответствия основных команд меню я даю
в двух вариантах: для платформы Windows PC и для Macintosh. Для клавиши Control
на платформе Windows PC я использую сокращение Ctrl; сокращение Cmd соответствует
клавише Command на Macintosh. На клавиатуре Macintosh есть клавиша Control,
но чаще всего она используется в комбинации с единственной кнопкой мыши в качестве
аналога правой кнопки на платформе Windows PC. Обозначение Alt применяется к
клавиатуре Windows PC, а обозначение Option — к клавиатуре Macintosh.
На всем протяжении текста слои перечисляются в порядке, соответствующем их представлению в фильме,
но иногда при их описании используется другая последовательность. В частности,
слой Background (Фон), который всегда находится в конце списка слоев, во многих
случаях является первым по времени создания. Я стараюсь рассматривать слои в
том порядке, в котором они создаются.
В системе Flash 5 вы можете определять собственные клавиатурные соответствия для различных команд. Поскольку заранее нельзя предсказать, какую именно комбинацию клавиш пользователь захочет определить для той или иной команды, все операции и иные элементы сценария представлены в листингах так же, как они отображаются в поле редактора сценариев. Каким образом они туда попадут — ваше личное дело.
Основной недостаток flash-приложений — чрезмерная нагрузка на центральный процессор, связанная с неэффективностью виртуальной машины Flash Player. Хотя следует отметить, что в некоторых случаях имеет место и недостаточная оптимизация flash-приложений их разработчиками, использование так называемых «генераторов» flash-приложений.
Второй важный недостаток flash-приложений заключается в недостаточном контроле ошибок, что приводит к частым отказам как самих приложений, так, в некоторых случаях, и всего браузера. Возможность flash-приложений нарушать работу всего браузера неоднократно вызывала критику со стороны разработчиков браузеров.
Ещё один недостаток, характерный для всех виртуальных машин, заключается в том, что не всегда есть возможность запустить flash-приложение, либо это связано с некоторыми трудностями. Например, некоторые пользователи или администраторы отключают в настройках браузеров flash-контент, что связано с экономией системных ресурсов, избавлением от надоевшей рекламы и информационной безопасностью (например, была обнаружена угроза перехвата flash-приложением содержимого буфера обмена). Этот недостаток делает технологию Flash менее универсальной и ограничивает её применение в веб-приложениях критической важности.
Четвёртый важный недостаток заключается в том, что использование Flash для размещения текстовой информации затрудняет её индексирование поисковыми системами. И хотя в принципе определённая система индексирования текста внутри swf-файлов была создана и внедрена Google и Yahoo! ещё в 2008 году, но доля сайтов, целиком созданных на Flash, остаётся небольшой.
Приложения Flash, работающие в версии FlashPlayer меньшей чем 11.2 не могут использовать правую кнопку мыши, зарезервированную для настроек самого Flash.
Как редактор, Adobe Flash CS5 не может конвертировать созданные в нём векторные изображения в форматы другого типа: .ai или .cdr, что было бы крайне полезным.
Спецификация SWF версии 4 была открыта, но описания последующих версий продавались только с подпиской о неразглашении, и их было запрещено использовать для создания проигрывателей Flash.
В мае 2008 года Adobe Systems объявила об открытии спецификаций SWF и видео контейнера FLV для использования на значительно более мягких условиях, как часть проекта «Open Screen Project», ориентированного на создание общей среды Flash на всех устройствах.
Рэй Вальдес (Ray Valdes) из Gartner, Inc. (англ.)русск. считает одной из причин открытия спецификаций конкуренцию со стороны Silverlight, однако представитель Adobe Дэйв МакАллистер (Dave McAllister) заявил, что это не так.
Однако запатентованные кодеки, используемые в FLV, принадлежат не Adobe, а скачанную спецификацию, в которой нет, например, описания протокола RTMP (20 января 2009 Adobe объявила, что опубликует его в первой половине 2009), нельзя распространять и переводить. Flash Player остаётся проприетарным, хотя Adobe обещала сделать использование его на мобильных платформах бесплатным. Осенью 2011 года, компания Adobe заявила о прекращении поддержки мобильных платформ.
Разработчик свободного декодера Swfdec Бенджамин Отте (Benjamin Otte) написал, что в открытой спецификации нет ничего, чего бы ещё не было известно благодаря обратной разработке, хотя официальная спецификация может быть понятнее для новичков и полезна при возникновении вопросов о легальности библиотеки. О том же говорят и разработчики Gnash. Они также считают возможной причиной этого частичного открытия спецификаций успехи свободных декодеров SWF и конкурирующего проприетарного формата Silverlight.
В феврале 2009 компания Adobe в рамках проекта Open Screen Project опубликовала информацию о снятии ограничений на использование форматов SWF и FLV/F4V, а также протоколов AMF и Mobile Content Delivery Protocol.
В реализациях Adobe Flash время от времени находят «дыры», позволяющие злоумышленникам производить разнообразные действия с системой. Так, например, в октябре 2008 года была найдена уязвимость, позволяющая удалённо контролировать веб-камеру и микрофон.
Прямым конкурентом Flash является технология Silverlight от Microsoft. Технология Java-апплетов также является альтернативой Flash в веб-приложениях, но значительно уступает в надёжности и простоте создания графики и анимации.
В браузерах отдельные части Flash могут быть заменены посредством HTML5, JavaScript (и AJAX), SVG.
Когда мы говорим Flash, то можем подразумевать совершенно разные вещи даже в рамках терминов web-технологии. Чтобы не было путаницы, будем использовать:
И так, когда мы открываем web-страницу, на которой находится flash анимация, в упрощенном варианте происходит следующее: интернет-браузер в html разметке обнаруживает вставку flash-анимации, создает объект flash-плеера и указывает ему какой файл нужно отобразить. Flash-плеер выполняет загрузку swf, и, если это возможно, начинает его отображать. Благодаря такому принципу работы flash-плеер может отображать так называемые прелоадеры (preloaders), воспроизводить потоковый звук и видео (как, например, YouTube) без полной загрузки самого swf.
Для уменьшения размера файла Macromedia применила два подхода.
Первый заключается в том, что для сохранения чисел используется побитовая упаковка. Выглядит это примерно так. Допустим, нам нужно сохранить размер прямоугольника, т.е. четыре числа типа integer. При простой записи это будет 4 * 4 байта = 16 байт. При записи в swf в первые 5 бит записывается число бит, необходимое для кодирования самого большого значения, а затем эти 4 значения в битовом представлении с указанной длиной бит. Например, нужно сохранить координаты (0, 0 — 100, 100) в переводе на твипсы (0, 0 — 2000, 2000). В битовом представлении число 2000 = 11111010000 (11 бит + 1 для знака). Выходит (5 + 4 * 12) / 8 = 7 байт, что меньше почти в двое.
Такой подход приводит к тому, что некоторые одинаковые тэги могут иметь разный размер. Это также относится и к Header.
Второй подход — это использование ZLib компрессии как в целом для всего swf, так и для отдельных тэгов.
Когда файл компрессированный, то первые три параметра Header-а (это 8 байт) не упакованы, а остальные упакованы и это объясняет, почему нельзя одним методом Read считать только заголовок swf.