Что такое код swf_actionprevframe

Содержание

Преобразовать SWF файл ActionScript 2 в SWF файл ActionScript 3 (КОД МОЖЕТ БЫТЬ ПОЛОСНЫМ)

Вечер, у меня есть SWF файл (Flash файл), который использует код ActionScript 2.

Мне нравится делать это в SWF файле, который использует ActionScript 3.

Обратите внимание, что я говорю «использует», а не содержит. SWF может содержать код AS2 все еще, даже если из внешнего кода будет отображаться код AS3. Это связано с тем, что код никогда не будет обработан, мне просто нужно сделать файл AS2 SWF в файл ASF ASF.

ActionScript можно полностью удалить из полученного SWF файла. Это не имеет значения.

Есть способ сделать это, просто вопрос о том, как.

Если кто-нибудь знает, как я должен это делать, скажите. Возможно, вы знаете уже существующее приложение, которое удаляет весь код ActionScript из SWF файла?

Просто чтобы быть совершенно ясным: я не хочу преобразовывать код AS2 в код AS3. Хотя, если это возможно как-то волшебным образом, я бы не стал жаловаться, конечно.

Это SWF, который должен быть изменен как SWF AS3 вместо ASF SWF файла.

Итак, у вас нет исходного кода, не так ли? Я никогда не пробовал это сам, но я думаю, что код можно было бы удалить с помощью Flasm, а затем преобразовать SWF-фильм с шестнадцатеричным выпуском значений заголовков, определяющих версии ActionScript и Flash Player.

Помимо тегов кода и большого количества байт-кода кода, я не знаю прямо сейчас никаких тегов AS1 и 2, которые не совместимы с AVM2. Возможно, неправильно.

Модификация SWF-файла

Программиру на С++/C# и с Flash/Actionscript не знаком. Пожалуйста, помогите разобраться.
На одном из сайтов используется флешка (swf-файл). Я смог декомпилировать ее с помощью Sothink SWF Decompiler. Проанализировал ее код на AS. Теперь хочу его модифицировать и заново скомпилить.
Как я вижу, код декомпилируется без проблем, т.к. это байт-код (не то, что декомпиляция exe-приложений).

КАк мне ее модифицировать? Подскажите необходимое ПО.

30.01.2010, 22:13

Открытие файла SWF из SWF
Приветствую, имеются два ролика SWF — один кнопка, второй большая анимированная сцена. Как по.

Загрузка Swf файла в Swf
Привет всем,в данный момент хочу сделать себе веб страницу во Flash страница состоит с 3 swf .

Каким образом из загруженного swf передать команду прелоадеру на загрузку другого swf?
День добрый. Есть внешний прелоадер, который загружает swf файлы содержащие разные уровни игры. В.

Открытие нового swf файла
Извиняюсь за глупый вопрос, но как открыть другой swf файл при помощи as3 ?)

Загрузка внешнего swf файла
Я во Flash ещё новичок, и мне нужна помощь. Задача: требуется загрузить один swf внутрь другого.

Иллюстрированный самоучитель по созданию Flash-игр

Ваша первая программа на ActionScript

Исходный файл: Helloworld.fla.

Первая команда, которую вы изучите, – trace, которая предназначена для передачи информации в окно Flash Output. Окно Output представляет собой небольшое текстовое окно, выводимое на экран во время предварительного просмотра ролика во Flash. Обычно оно используется для вывода отладочных сообщений при разработке программы.

Хотя в действительности данная команда не будет применяться в законченном Flash-ролике, приводимый здесь пример наглядно демонстрирует, что при помощи ActionScript вы можете заставить Flash выполнить указанные вами действия.

Для начала создайте новый Flash-ролик. При этом автоматически создается временная шкала с одним слоем и одним ключевым кадром. Выделив его и нажав F9, вызовите окно Actions. Затем при помощи всплывающего меню в правом верхнем углу окна переключите его в экспертный режим.

Теперь вы сможете поместить курсор в пустое программное поле в правой части окна Actions. Введите следующую строку:

Точка с запятой ставится в конце каждой команды, как в примере с trace.

Команда trace – это встроенная функция Flash. В круглых скобках указываются параметры функции. Параметры – это входные данные, необходимые функциям для выполнения их задачи. Команда trace использует один параметр: строку, которая помешается в окно Output. Некоторые функции содержат один параметр и более, в то время как другие – ни одного.

Ваш экран должен выглядеть примерно так, как изображено на рис. 2.2. Здесь вы видите один слой и один кадр на временной шкале. Окно Actions имеет заголовок Actions – Frame. Это обозначает, что содержащийся в окне код ActionScript относится к выбранному в данный момент ключевому кадру. Единственным элементом программного листинга является команда trace. Попробуйте самостоятельно создать данный ролик.

Рис. 2.2. Программа «Hello World» описывает первый и единственный кадр

Для того чтобы запустить программу, выберите команду Control › Test Movie (Контроль › Запустить пробное воспроизведение ролика). В течение секунды Flash создаст swf-файл и откроет его в окне предварительного просмотра. Окно останется пустым, так как в ролике нет никакой графики. Затем будет открыто окно Output со словами «Hello World!» (рис. 2.3). Это был важный шаг в изучении ActionScript. Мы дали Flash команду. В ответ Flash показал, что он понимает ее и слушается вас.

Рис. 2.3. В окне Output содержится результат выполнения команды trace

Программа «Hello World» появилась вместе с первыми языками программирования и стала традиционной. Это самая элементарная программа, которая обычно приводится как первый пример при обучении любому языку программирования, будь то ассемблер громадной ЭВМ, Basic, Pascal, С, Java или ActionScript. Только что вы прошли по следам миллионов программистов, начинающих изучать свое ремесло.

Flash – использование ActionScript 3.0

IT блог — Flash – использование ActionScript 3.0

Платформа Adobe Flash является основой для разработки многофункциональных интерактивных веб-приложений, презентаций и пользовательских интерфейсов. Приложение Flash позволяет разработчикам и дизайнерам использовать графику, текст, аудио и видео.

В последние годы самые популярные браузеры пытаются избавиться от использования Flash в пользу возможностей HTML5. Например, в последних версиях Google Chrome плагин Adobe Flash Player остановлен по умолчанию и на сайтах, использующих Flash, необходимо включать его вручную. Многие популярные видео-сервисы, такие как YouTube, также отказались от использования Flash в пользу HTML5. Тем не менее, до сих пор особо популярными остаются игры на flash, где возможности HTML5 пока значительно уступают.

У Flash есть два «лица»: то которое вы видите на экране, и комплексный механизм сценариев, называемый ActionScript, который вы не видите. Являясь языком сценариев, встроенным во Flash, ActionScript позволяет создавать интерактивные решения. Любой ролик, где нужно что-то нажать, перетащить или поставить на паузу, требует использования ActionScript, который укажет Flash, что надо делать. ActionScript является основой всей интерактивности и логики, встроенной во Flash.

В выпуске Flash CS3 был представил ActionScript 3.0 — значительно усовершенствованный язык сценариев. Старые версии ActionScript медленно выполняли большие и сложные сценарии. ActionScript 3.0 изменил это. Он почти в 10 раз быстрее по сравнению с ActionScript 2.0 и обладает намного большей функциональностью.

ActionScript 3.0 принял истинный объектно-ориентированный подход к разработке, который позволяет приложениям Flash конкурировать с решениями, разработанными с помощью Microsoft .NET (Silverlight) или Java. ActionScript 3.0 значительно расширяет все то, что может быть достигнуто за счет увеличения скорости работы в проигрывателях Flash Player 9 и 10. С ActionScript 3.0 и Flash Player 10.1 и более поздних версиях вы можете создавать приложения для большинства настольных компьютеров, устройств и систем. ActionScript 3.0 в настоящее время является языком сценариев по умолчанию во Flash CS5 и последующих версиях.

Из этой статьи вы узнаете, почему ActionScript 3.0 — тот язык программирования, который вы захотите начать использовать, что изменилось по сравнению с более ранними версиями ActionScript, а что осталось таким же и как сделать наши приложения еще мощнее. Единственная проблема, которую вам придется решить — это выбрать, что разрабатывать в первую очередь.

Использование объектно-ориентированного программирования в ActionScript

Объекты являются ключом к пониманию объектно-ориентированного программирования (ООП). В ООП объект является столь же реальным, как и обычный объект в нашем мире. Например, собака или даже компьютер — объекты, которые существуют в реальном мире. Объекты реального мира схожи с объектами компьютерного мира по двум параметрам: у них есть определенное состояние и поведение. Например, состояние собаки можно описать такими свойствами, как ее имя, окрас, порода, и тем, голодна ли она. Поведением собаки будет лай, привлечение внимания и виляние хвостом.

Компьютерные объекты моделируются по образцу объектов реального мира в плане конкретных состояния и поведения. Класс является представлением объекта, который хранит информацию о типе его данных, состоянии и поведении. Класс может включать в себя три типа характеристик: свойства, методы и события. Свойства представляют различные данные, связанные с объектом. Методы означают действия, которые могут быть выполнены с объектом. Событие – это действие системы, приложения или пользователя (например, щелчок кнопкой мыши, который вызывает действие, связанное с объектом).

После создания класса вы можете создавать классы на основе существующего, которые называются подклассами, или расширениями класса. Подкласс наследует все свойства и методы родительского класса, который, в свою очередь, будет называться суперклассом. Например, вы можете создать суперкласс Parent и подкласс Children. Наследование позволяет одному определению класса (подклассу) включать все функции другого определения класса (суперкласса). Вы также можете создавать дополнительные методы и свойства подкласса, а также переопределять методы, унаследованные от суперкласса, что называется полиморфизмом.

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

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

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

Настройка Flash для движка AVM 2.0

— плагин, который установлен в веб-браузере для воспроизведения файлов SWF, является ключом к успеху при создании быстрых приложений. Чтобы скомпилировать, а затем запустить любой код ActionScript в роликах, Flash Player использует инструмент, называемый ActionScript Virtual Machine (виртуальная машина ActionScript) или AVM. Для ActionScript 1.0 и 2.0 Flash Player использует AVM 1.0. Flash Player 9 представил новый AVM версии 2.0, который используется для работы только с SWF-файлами ActionScript 3.0. Освоить его довольно просто.

Используя AVM 2.0. вы можете создавать приложения, которые характеризуются высокой скоростью и сложностью традиционных настольных приложений. Примерами таких приложений являются WorkFlow Lab от Adobe — инструмент, который позволяет разрабатывать составные приложения Workflow и конкурирует непосредственно с инструментом Visio от Microsoft; Adobe Story — инструмент, который позволяет создавать сценарии мультимедийной и видеопродукции, а также Kuler — сложный инструмент управления цветами. Использование данных инструментов дает такую же ответную реакцию, как и традиционные настольные приложения.

Разработка на ActionScript 3.0 решений, которые ориентированы на движок AVM 2.0, гарантирует, что вы значительно оптимизируете свою работу во Flash.

Flash Player 9 поддерживает AVM 1.0 для обратной совместимости с существующими и устаревшим содержимым. Flash Player 7 и 8 поддерживают только AVM 1.0. Однако есть несколько моментов, касающихся совместимости, о которых вы должны знать. SWF-файл не может объединить ActionScript 1.0 или 2.0 с кодом версии 3.0, при этом код может загрузить файл SWF с версиями 1.0 или 2.0, но он не может получить доступ к переменным и функциям файла (за исключением возможности использовать команду loadMovieNum() и передать параметр уровня). Если у вас есть код версий 1.0 или 2.0 и вы хотите использовать код версии 3.0, необходимо привести весь старый код к ActionScript 3.0. Если вы хотите использовать поведения, вам нужно прибегнуть к ActionScript 2.0, так для 3.0 поведения недоступны.

Виртуальные машины и JavaScript

Веб-браузеры используют виртуальные машины для запуска JavaScript, который является «двоюродным братом» ActionScript. Обе технологии построены на международном формате ECMA-262, или ECMAScript, как его часто называют. Такие браузеры, как Google Chrome, Safari, FireFox и Internet Explorer используют виртуальные машины сценариев JavaScript ( JavaScript Virtual Machines — JVM) для воспроизведения содержимого.

Многие из компаний, создающих движки для браузеров, дали им яркие названия: V8 для Google Chrome, SquirrelFish для Safari и SpiderMonkey для FireFox. Но победителем в оригинальных названиях конечно можно дать Microsoft – ее творческое вдохновение ограничилось названием своей виртуальной машины JS (для JavaScript).

Конечно AVM 2.0 от Adobe здесь занимает второе место. Есть ли шанс, что Adobe все-таки присвоит AVM 3.0 какое-нибудь яркое имя?)

Использование ActionScript 3.0

По сравнению с предыдущими версиями, ActionScript 3.0 претерпел значительные изменения. Это не означает, что если вы работали с ActionScript 1.0 или 2.0, то вам придется тяжело. Просто освоение новых способов использования кода потребует времени.

Понимание ActionScript 3.0

ActionScript 3.0 является надежной моделью программирования (полностью актуальной в соответствии с последним выпуском стандарта ECMAScript), знакомой разработчикам с базовыми знаниями ООП. Если вы уже использовали в работе другие языки программирования, такие как Java, C++ или C#, то должны быть в курсе, что означает данный термин.

Объектно-ориентированное программирование позволяет разбивать код на объекты, которые могут быть легко использованы повторно. С помощью ООП легче управлять приложением, которое состоит из целой коллекции файлов маленького размера, а не из одного большого файла.

Рассмотрим основные изменения, которые потребуют определенного времени на привыкание к ним:

ActionScript находится в файлах класса или на временной шкале.

Проектирование кода действительно объектно-ориентированное.

Вы не можете добавлять ActionScript непосредственно к фрагментам роликов или экземплярам кнопок.

Запуск событий претерпел изменения.

Загрузка данных изменилась.

XML управляется по-другому.

Кроме того, добавлено использование информации о типе во время выполнения, улучшено использование свойств и классов с изолированными кассами, добавлено использование метода замыкания для обработки событий, включен стандарт ECMAScript для XML, улучшена поддержка регулярных выражений и добавлены примитивные типы (например, int – целочисленный тип).

Работа с ActionScript 3.0

Есть два способа работы с ActionScript. Первый заключается в добавлении ActionScript на временную шкалу. Это знакомо давним разработчикам Flash. Рекомендуется иметь слой на этой временной шкале, посвященный только работе с ActionScript. Adobe советует пометить его как actions. Блокировка данного слоя предотвратит случайное добавление на него фрагментов ролика.

Второй метод заключается во вставке ActionScript в файлы Flash с файлом класса ( >Ключевое слово Private ограничивает использование атрибута, определенного только в этом классе, а не совместно с другими классами. Это полезно, когда вы разрабатываете инструкции, которые должны быть выполнены в отдельном пространстве в частном порядке.

Другие важные изменения перечислены ниже:

Разработка построения решений с моделью событий DOM 3.

Использование пространств имен в ваших проектах.

Рисование с помощью класса фигуры (Shape).

Возможность легко работать с внешними библиотеками ActionScript.

Несмотря на все изменения в ActionScript 3.0 по сравнению с 2.0, важно помнить, что есть много функциональных возможностей, одинаковых для обеих версии. Например, вы по-прежнему можете использовать тем же самым образом следующие элементы: переменные, объект Math, выражения if/else, выражения switch, строки, даты, массивы и логические значения.

Следующий код работает как в ActionScript 2.0, так и в версии 3.0:

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

Расширение ActionScript открытыми библиотеками

Основой языка ActionScript 3.0 является то, что он может быть легко расширен. Для этого можно использовать десятки больших отрытых библиотек, расширяющих функциональность Flash. Достойными примерами являются:

Box2D Physics Engine;

CoreLib – коллекция базовых утилит, таких как хеширование MD5, сериализация JSON и расширенный анализ данных;

Syndication Library – библиотека, которая позволяет легко разбирать базовые каналы ATOM и RSS;

Alive PDF – библиотека, позволяющая преобразовывать содержимое экрана с Flash в формат PDF.

Что такое код swf_actionprevframe

Скидка 25% на все тарифы хостинга по промокоду STDCITF

Стандарты Actionscript


Содержание


Стандарты Actionscript

Приложения Macromedia Flash в основном строились без учета каких-либо стандартов и основополагающих принципов. Такая гибкость способствует решению задач множеством способов, и это хорошо, но приложение становится непроходимым лесом для всех кроме автора — такой код сложен для понимания. Даже автор, спустя некоторое время, будет с трудом читать написанный им же код. Если разработчик не может понять код в приложении, то код будет трудно отлаживать, вносить в него изменения или использовать его многократно.

Стиль


Принципы присвоения имен

Во-первых, схема присвоения имен должна быть последовательной, а имена должны быть удобными для чтения и понимания. Это означает, что имена должны быть понятными словами или фразами. Первичная функция или назначение любого объекта должны быть очевидными из его имени. Так как типы переменных в ActionScript контролируются динамически, то имя должно также содержать суффикс, определяющий тип объекта, на который ссылается имя. Самый естественный случай имен — это фразы типа «существительное-глагол» или «прилагательное-существительное». Например:

  • Имя клипа — «my_movie.swf»;
  • Переменная для добавления к URL — «course_list_output» (вывод списка курсов);
  • Компонент или объект — «ProductInformation» (информация о продукте)
  • Переменная или свойство — «userName» (имя пользователя)

Имена функций и переменных должны начинаться со строчной буквы (a, b, c, . x, y, z). Имена объектов и конструкторов объектов должны начинаться с заглавной буквы (A, B, C, . X, Y, Z). Использование смешанных регистров символов рекомендуется в случае именования переменных. Другие форматы именования приемлемы, если они используются последовательно во всем проекте. Имя переменной может содержать только буквы, числа и символы подчеркивания. Не начинайте имя переменной с числа или символа подчеркивания. Неправильными именами переменных будут следующие:

  • _count = 5; // начинается с символа подчеркивания
  • 5count = 0; // начинается с числа
  • foo/bar = true; // содержит символ «слэш»
  • foo bar = false; // содержит пробел

Кроме того, в качестве имен переменных нельзя использовать ключевые слова ActionScript. Также избегайте использования в качестве имен переменных слов из популярных конструкций программирования, даже если Macromedia Flash Player к настоящему времени не поддерживает эти конструкции в качестве ключевых слов. Это дает больше уверенности в том, что будущие версии проигрывателя не вступят в конфликт с вашим приложением. Например, не нужно делать так:

  • var = «foo»;
  • MovieClip = «myMovieClip»;
  • switch = «on»;
  • case = false;
  • abstract = «bar»;
  • extends = true;
  • implements = 5;

Так как ActionScript совместим с ECMAScript, авторы приложений могут ознакомиться со списком зарезервированных слов, приведенных в спецификации ECMA. Пока Flash MX не поддерживает константы, разработчики должны применять следующий принцип: имена переменных набирать символами нижнего регистра, а имена переменных-констант — только символами верхнего регистра. Например:

  • course_list_output = «foo»; // переменная
  • courseListOutput = «foo»; // переменная
  • BASEURL = http://www.foo.com; // константа
  • MAXCOUNTLIMIT = 10; // константа
  • MyObject = function<>; // функция конструктора
  • f = new MyObject(); // объект

Редактор кода ActionScript в среде разработки Flash MX имеет встроенную функцию «завершения кода». Эта функция помогает вам писать код, предоставляя в виде выпадающего списка возможные варианты завершения кода. Чтобы вы могли пользоваться этим преимуществом, имена ваших переменных должны соответствовать определенному формату. В этом встроенном формате суффикс имени переменной является строкой, указывающей на тип переменной. Ниже приведена таблица поддерживаемых суффиксов:


Таблица 3
: Суффиксы для активации функции завершения кода

Тип объекта Суффикс Пример
String _str myString_str
Array _array myArray_array
MovieClip _mc myMovieClip_mc
TextField _txt myTextField_txt
Date _date myDate_date
Sound _sound mySound_sound
XML _xml myXML_xml
Color _color myColor_color
Button [1] _btn myButton_btn
TextFormat _fmt myTextFormat_fmt
XMLSocket _xmlsocket myXmlSocket_xmlsocket
FListBox _lb myFListBox_lb
FScrollBar _sb myFScrollBar_sb
FComboBox _cb myFComboBox_cb
FScrollPane _sp myFScrollPane_sp
FMessageBox [ 2] _mb myFMessageBox_mb
FDraggablePane _dp myFDraggablePane_dp
FTicker tick_ (префикс) tick_myFTickerMain
FTree _tree myFTree_tree
FTreeNode _tn myFTreeNode_tn
FIconButton _ib myFIconButton_ib
FProgressBar _pr myFProgressBar_pr

Вы увидите эту функцию в действии, если наберете в панели Actions один из примеров и символ точки. Например, введите myString_str. — появится выпадающий список свойств и методов для объекта String . Не забывайте о точке:


Рисунок 1
: Пример действия помощника завершения кода.

Наконец, имена всех .swf-файлов должны быть набраны в нижнем регистре, а слова в именах должны быть разделены символом подчеркивания (например, «lower_case.swf»). Обсуждение соглашений об именовании включаемых файлов ActionScript см. в разделе «Используйте файлы #include .as».

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

Комментирование кода

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

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

Вот пример простого комментария для переменной:

var clicks = 0; // переменная для подсчета нажатий кнопки

Блочные комментарии полезны для больших кусков текста:

/*
Инициализирует переменную clicks , хранящую количество нажатий кнопки.
*/

Ниже приведены некоторые общие методы для указания особо важных комментариев (в скобках предложены русскоязычные аналоги):

// :TODO: topic (// :СДЕЛАТЬ: тема)

Илон Маск рекомендует:  Что такое код session_id

Указывает, что код нужно доделать или сделать что-то еще.

// :BUG: [bugid] topic (// :ОШИБКА: [номер ошибки] тема)

Показывает известную ошибку («глюк», «баг»). Комментарий также должен объяснять, в чем состоит проблема, и содержать » bug ID » (номер «бага»), если необходимо.

// :KLUDGE: (// :ВОЗМОЖЕН ДРУГОЙ ВАРИАНТ:)

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

Уведомляет разработчиков, что код со многим взаимосвязан (его изменение повлечет изменения в других местах). Это совет разработчику: «подумай, прежде чем что-то изменять».

Пример

/*
:TODO: msw 654321: проблемы с отображением больших объемов данных из БД. Наверное, следует разбивать данные на более мелкие порции для каждого запроса.
*/

Формат временной диаграммы (таймлайна)

Избегайте использования названий слоев, принятых по умолчанию ( Layer 1 , Layer 2 , и т.п.), так как это может привести к путанице. Слои таймлайна должны называться интуитивно понятным образом. Слои также должны быть сгруппированы вместе путем использования папок там, где это имеет смысл. Например, следует располагать все слои с кодом ActionScript на самом верху стека слоев, чтобы в таймлайне можно было легко найти весь код.

Блокирование неиспользуемых в данный момент слоев — хорошая практика. Это предупреждает случайные изменения в документе.

Область видимости

Flash Player 6 поддерживает концепцию «цепочки областей видимости» (как определено в стандарте ). Таким образом, устранены значительные недостатки «прямой области видимости» в .

Цепочка областей видимости — это список ActionScript-объектов. Flash Player ищет идентификатор, начиная с последнего элемента в цепочке областей видимости, и продолжает подниматься по цепочке, пока не найдет его.

Цепочка областей видимости для типичного сценария ActionScript:

  • Объект Global ;
  • Объект MovieClip ;
  • Локальные переменные.

Конструкция with временно добавляет объект в конец цепочки областей видимости. Когда действие with прекращается, объект удаляется из цепочки областей видимости.

При определении функции текущая цепочка областей видимости копируется и хранится в объекте функции. При вызове функции происходит переключение текущей цепочки областей видимости на цепочку областей видимости объекта функции, а в конец цепочки добавляется новый объект Local Variables.

В Flash 5 область видимости функции всегда была следующей:

  • Объект Global ;
  • мувиклип, содержащий функцию;
  • Локальные переменные.

Список областей видимости никогда не содержал более трех пунктов, кроме случая с использованием with . Это было отклонением от стандарта , и область видимости метода всегда находилась в мувиклипе, содержащем метод, а не в месте определения этого метода.

В Macromedia Flash Player 6 при определении метода мувиклипа вне самого мувиклипа цепочка областей видимости метода будет содержать внешний объект, а не объект мувиклипа, для которого определяется метод. В таком случае в теле определяемого метода необходимо использовать ключевое слово this , чтобы используемые в этом методе идентификаторы ссылались на объект мувиклипа, а не на внешний объект.

Имейте в виду, что поддерживается обратная совместимость с Flash Player 5. Для среды разработки Flash 5 применимы те же правила использования области видимости, что и для .

Используйте относительные пути для задания области видимости

Область видимости должна быть задана для каждой переменной. Исключением являются параметры функций и локальные переменные. Область видимости переменных должна задаваться относительно их текущего положения, если это возможно. Использование _root для задания области видимости переменной не рекомендуется, поскольку это ограничивает мобильность кода. Вместо _root используйте ключевое слово _parent или this , например:

this.myVar.blah = 100; // определяйте область видимости для переменных, используя относительную адресацию, как в этой строке

_root.myMovieClip.myVar.blah = 100; // НЕ задавайте область видимости переменных, используя абсолютные ссылки, как в этой строке

Если все же приходится использовать абсолютную адресацию к главному таймлайну, вместо использования _root создайте переменную-ссылку на главный таймлайн. Это позволит изменять всего один параметр, если структура таймлайна изменится. Чтобы создать удобную ссылку на основной таймлайн клипа, добавьте такую строку кода к основному таймлайну:

_global.myAppMain = this; // (замените «myApp» названием вашего приложения)

После вставки этой строки в ваше приложение, используйте _global.myAppMain.someFunction , чтобы ссылаться на функции главного таймлайна. Это позволяет изменять структуру приложения, не нарушая область видимости вызовов функций и переменных в клипе.

_root против _global

Важно понимать разницу между _global и _root . Ссылка _root уникальна только в рамках каждого загруженного .swf-клипа. Ссылка _global применима ко всем клипам в пределах проигрывателя. В общем случае для ссылок лучше использовать _global , а не _root .

Соглашения ActionScript


Держите весь код в одном месте

Везде, где это возможно, весь код должен размещаться в одном месте. Это облегчает его нахождение и отладку. Одна из главных сложностей в отладке клипов Macromedia Flash — это поиск кода. Если большая часть кода размещена в одном кадре, эта проблема устраняется. Обычно лучшее место для размещения кода — это первый кадр.

Когда в первом кадре расположен большой код, разделите его на части комментариями, чтобы повысить читабельность, например:

/*** Раздел функций для кнопок ***/

/*** Константы и переменные ***/

Одно исключение при размещении всего кода в первом кадре возникает в случае предварительной загрузки клипов. В приложении с предзагрузкой клипов размещение всего кода в первом кадре может быть невозможным. Но все равно нужно стремиться к централизации кода.

В клипах с прелоадером начинайте написание кода со второго кадра. Используйте два слоя для кода — один слой для функций, а другой слой для действий, связанных с различными состояниями приложения.

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


Рисунок 2
: Пример временной диаграммы («таймлайна») с предзагрузчиком.

Используйте файлы #include .as

Любой определенный вами объект или библиотека созданных вами функций должны определяться во внешнем ActionScript файле и использоваться в качестве файла включаемого (include) файла. Например, если приложение использует объекты с именами «Foo» и «Bar», каждый из этих объектов должен содержаться в отдельном включаемом ActionScript-файле. Имя включаемого файла должно соответствовать имени объекта, например:

Библиотеки многократно используемых функций должны также определяться во включаемых файлах ActionScript. В этом случае имя включаемого файла должно состоять из букв нижнего и верхнего регистра (начинаясь с буквы нижнего регистра), например:

Такая система использования включаемых файлов делает объектно-ориентированный код ActionScript более легким для идентификации. Но более важно то, что код становится модульным, позволяя разработчикам создавать ActionScript-библиотеки объектов и функций. Только необходимый для приложения код включается из библиотеки внешних файлов.

Кроме того, используя внешние файлы ActionScript, разработчики могут интегрировать файлы кода с системой управления версиями, например, такими, CVS или SourceSafe. Это облегчает отслеживание исходного кода.

Кадры как состояния приложения

Разработчики часто пишут построчный код (программу) прямо на отдельных кадрах, чтобы определять состояния приложения. Такая практика нежелательна.

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

Продолжая организацию приложения, создайте в клипе два слоя с кодом. В первом кадре первого слоя, существующего по всей длине клипа, располагается самая большая часть кода. Второй слой содержит действия, необходимые ключевым кадрам для изменения состояний приложения. Единственный код в каждом ключевом кадре второго слоя должен быть вызовом функции для конкретного состояния (вызываемая функция должна быть описана в первом кадре первого слоя). Для создания некоторых состояний (например, для вызовов диалоговых окон) допускается использование мувиклипов, присоединенных с помощью действия attachMovie во время выполнения приложения.

Избегайте размещения кода на мувиклипах и кнопках

Не размещайте код на мувиклипах и кнопках, если в этом нет крайней необходимости. Если код все же должен быть размещен на мувиклипе или кнопке, используйте при этом минимальное количество кода. С этой точки зрения лучше всего вызывать функции, как в следующем примере:

myButton.onMouseDown = function() <
_parent.doMouseDown(this);
>

Использование вызова функции переносит всю функциональность на основной таймлайн мувиклипа.

Инициализация

Инициализация приложения используется для задания его начального состояния. Функция инициализации вызывается в приложении в первую очередь и только один раз — программой. Все остальные вызовы этой функции должны управляться событиями.

// кадр 1
this.init();
function init() <
if (this.inited != undefined)
return;
this.inited = true;
// здесь идет код инициализации.
>

Используйте ключевое слово var для локальных переменных

Все локальные переменные должны использовать ключевое слово var . Это предохраняет переменные от глобального доступа и, что более важно, предохраняет переменные от неумышленного переназначения [3] . Например, следующий код функции не использует ключевое слово var при объявлении переменной, что приводит к (неумышленной) перезаписи внешней переменной, не относящейся к функции:

function loopTest()
<
trace(counter);
for(counter = 0; counter counter , находящаяся на основной временной диаграмме, переназначается переменной counter , которая находится внутри функции. Ниже приведен исправленный код, который использует ключевое слово var , для объявления обеих переменных. Использование декларации var в функции устраняет ошибку вышеуказанного кода:

function loopTest()
<
trace(counter);
for(var counter = 0; counter counter сохранила свое значение после вызова функции.

Создание объектов

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

Пример лучшей практики создания объекта:

MyObject.prototype.name = «»;
MyObject.prototype.setName = function(name)
<
this.name = name;
>

MyObject.prototype.getName = function()
<
return this.name;
>

Следующий пример демонстрирует неправильный метод создания объекта:

MyObject = function()
<
this.name = «»;
this.setName = function(name)
<
this.name = name;
>

this.getName = function()
<
return this.name;
>
>

В первом примере каждый экземпляр объекта MyObject указывает на одни те же функции и свойства, определенные в прототипе объекта. При этом в оперативной памяти находится только одна копия getName() , независимо от количества созданных объектов MyObject .

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

Наследование объектов

Задание свойства » __proto__ » для создания наследования практиковалось в . Эта практика не поддерживается в и ее использование не рекомендуется. Свойство __proto__ должно рассматриваться как свойство только для чтения (read-only). Правильный способ создания наследования — это создание цепочки прототипов. Чтобы создать цепочку прототипов, установите свойство » prototype » функции конструктора подкласса (subclass) в экземпляр надкласса (superclass), используя следующий синтаксис:

Пример этой практики:

function Shape()
<
>
function Rectangle()
<
>
Rectangle.prototype = new Shape();

Следующая практика НЕ рекомендуется:

Если разработчики беспокоятся, что такая форма наследования приведет к тому, что весь конструктор будет признан необязательным, следующий код поможет предотвратить это:

_global.Super > if (this._name!=undefined) <
// код конструктора размещается здесь
>
>

В вышеприведенном примере код конструктора не будет выполнен, потому что еще не определен экземпляр. Заметьте, что этот код работает только в классах, основанных на классе MovieClip.

Производительность


Предварительная загрузка

Главная проблема создания компонентов, хорошо согласовывающихся с процессом предварительной загрузки — это минимизация количества объектов, загружающихся перед первым кадром. Символы в первом кадре загружаются прежде, чем в проигрывателе сможет отобразиться какая-либо графика. Это означает, что даже компонент прелоадера не появится, пока не будут загружены все символы с пометкой «Export in First Frame» (экспортировать в первом кадре). Поэтому любой код ActionScript, обрабатывающий действия пользователя, должен всегда помещаться в кадре, следующем после кадра с прелоадером.

Типы данных и их размеры в файлах .swf

Следующая информация может использоваться для оптимизации времени загрузки критических частей приложения.

Таблица 2: Основные объекты ActionScript

Тип объекта Размер, байтов
Короткая строка (7 символов) 55
Число 22
Объект 340
Пустой мувиклип 800
Объект функция 700
Текстовое поле 9 500

Таблица 3: Простые .swf-файлы

Тип простого .swf-файла Размер, байтов
Пустой .swf-файл 250 000 (большая часть памяти уходит на встроенные объекты ActionScript)
Пустой .swf-файл с определенным компонентом 750 000 (большая часть отводится самому .swf-файлу и объекту функции компонента)

Таблица 4: Объекты компонентов (по одному экземпляру)

Объект компонента Размер, байтов
PushButton 60 000
CheckBox 55 000
Пустой ListBox 490 000

Предосторожности использования оперативной памяти

Текст. Каждый отдельный текстовый объект использует 10 КБ памяти. Это относится к динамическим текстовым полям, полям для ввода текста и статическим текстовым полям, использующим шрифты устройств («device fonts»), например, «_sans».

Мувиклип. Каждый мувиклип использует около 1 КБ памяти. Это число может стремительно возрастать при увеличении количества используемых мувиклипов. Имейте в виду, что графические символы (graphic) не обладают такими высокими требованиями к памяти, как мувиклипы.

Объекты функций. Каждый объект функции создает два объекта ActionScript, вместе занимающие 700 байтов. Создание объекта функции для каждого экземпляра объекта — дорогое удовольствие с точки зрения расхода памяти. Рекомендуется всегда использовать прототипы. Прототипы создаются только один раз и помогают избежать неоправданного расходования памяти.

Вывод

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

Как отредактировать SWF-файл?

Порой, при работе с SWF-файлами часто возникает ситуация, когда необходимо внести правки в готовое «творение», не имея при этой исходного FLA- файла. Это может быть всё, что угодно: изменение текста, картинок, звуков и т.д., при этом в отдельных случаях вовсе не обязательно прибегать именно к тем инструментам, с помощью которых был создан файл. Основная сложность заключается в том, что SWF-файл — это уже скомпилированный FLA-файл. При наличии последнего, пользователь имеет возможность видеть всю структуру файла, SWF же содержит минимум информации. После компиляции SWF-файл можно импортировать во Flash, однако без дополнительного ПО восстановить его структуру вряд ли удастся. Соответственно, для внесения правок необходимо декомпилировать SWF-файл.

Такая ситуация породила массу программ, таких как: Sothink SWF Decompiler, Eltima Flash Decompiler Trillix , Power Flash Decompiler и ещё великое множество различных утилит. В этой статье мы приведем примеры и параметры некоторых декомпиляторов, а так же рассмотрим сам процесс декомпиляции на примере программы Sothink SWF Decompiler.

Sothink SWF Decompiler — это программа для захвата, и декомпиляции файла SWF в FLA, а также для извлечения из него различных ресурсов. Программа позволяет извлекать изображения, шрифты, звуки и т.д. из готовых SWF-файлов и считается одной из лучших программ для декомпиляции.

Для человека, знакомого с такой системой, не составит труда с помощью программы «разобрать», а потом заново «собрать» SWF-файл. Для любителей же это может оказаться весьма сложной задачей. Итак, как выглядит процесс декомпиляции в Sothink SWF Decompiler?

Начнём с интерфейса. Собственно, главное окно программы выглядит так:

Слева располагается проводник по каталогам компьютера (Multifile Export), в центре — экран, где можно просмотреть флеш-ролик, справа же можно видеть окно (Resources), в котором отображаются составные части ролика (они появляются после «разборки» файла программой с помощью команд Exports FLA File и Exported FLA File Version).

Команда Exports FLA File более проста, команда Exported FLA File Version позволяет выбрать версию файла для FLA, который вы собираетесь экспортировать (программа поддерживает форматы Flash 6, Flash MX 2004 (7.0), Flash 8, Flash CS3 (9.0) и Flash CS4 (10.0).

Для примера, воспользуемся командой Exports FLA File.

Добавляем файл в список для декомпиляции, а потом сохраняем его. Для этого в открывшемся окошке кликаем на Add file, выбираем нужный файл. Затем кликаем на пиктограмму возле строки Export Path.

После этого можно увидеть, что файл добавился в список слева, в окне предпросмотра проигрывается ролик, а в панели справа появились составляющие файла. Далее обратить внимание следует именно на них.

Как с ними работать? Чтобы просмотреть компоненты файла и найти искомые, необходимо просто выбрать их из списка (выбранный компонент отобразится в центральном окне предпросмотра).

Далее требуется декомпилировать и соханить каждый из компонентов. Для этого в окне Resources выбираем команду Export FLA и кликаем на Export, после чего получаем самостоятельный компонент (.fla-файл), с которым можно спокойно работать во флеш-редакторе.

Немного нюансов: в зависимости от необходимости, можно сохранить все компоненты файла отдельно (установив галочку напротив графы Export Resources) или же сохранить только некоторые необходимые компоненты. В последнем случае нужно будет произвести дополнительные настройки. Для этого нужно выбрать режим декомпиляции Export Resources. Затем выбрать меню Option, и во всплывшем окне, выделить форматы файлов, которые вам нужно сохранить.

Далее всё стандартно, нужно кликнуть на кнопку OK, а затем на Export. Таким образом, сохранятся только файлы выбранных вами форматов.

Как уже говорилось, Sothink SWF Decompiler является одной из самых распространённых программ для декомпиляции SWF-файлов, а также считается одной из самых стабильных.

Помимо всего прочего, программа также включает в себя интересный инструмент SWF Catcher, который позволяет захватить flash-анимацию, которая просматривалась с помощью браузеров Internet Explorer или Firefox.

В общем-то, процесс декомпиляции SWF-файлов похож в различных программах-декомпиляторах. Поэтому мы не будем рассматривать декомпиляцию на примере других программ, которых довольно много, однако приведём некоторые характеристики наиболее популярных из них.

Sothink SWF Decompiler
  • Поддерживает Action Script v. 2.0 и v.3.0
  • Возможность поиска в исходном коде Action Script — Конвертирование SWF в FLA и во FLEX
  • Извлечение SWF из EXE
  • Предпросмотр и экспорт ресурсов файла
  • Экспорт ActionScript файла в AS и HTML форматы
  • Имеется плеер для проигрывания флэш-файлов
  • Детальный просмотр свойств элементов во Flash-ролике
  • Поддержка сканирования кэша IE и вывод списка всех просмотренных вами Flash-файлов


Flash Decompiler Trillix

  • Поддерживает Action Script v. 2.0 и v.3.0
  • Возможность экспорта флеш-роликов в такие форматы как AVI, MPEG и т.д.
  • Возможность детальной настройки конвертации SWF в FLA
  • Возможность декомпилировать и конвертировать одновременно несколько флэш-роликов
  • Возможность редактирования объектов файла без конвертации в FLA
  • Извлечение ресурсов файла в различные форматы
  • Имеется встроенный проигрыватель Flash-файлов
  • Возможность сохранения Flash-роликов онлайн
  • Удобный интерфейс: масштабируемый, лента панели инструментов


SWF Decompiler Magic

  • Конвертирование SWF в FLV и EXE
  • Возможность экспорта данных из флэш-файла в FLA-файл:
    • Экспорт звуков и видео из флэш-файла
    • Экспорт текста, форм, кнопок, изображений, шрифтов и фреймов из флэш-файла
    • Экспорт скриптов из флэш-файла
  • Обзор и предпросмотр ресурсов перед экспортом
  • Поддержка редактирования динамического текста во флэш-файле
  • Поддержка перемещения изображений во флэш-файле
  • Просмотр детальной информации о каждом объекте из флэш-ролика

Что хочется ещё добавить о флеш-декомпиляторах? На первый взгляд, работать с ними достаточно просто, и в определённой степени так оно и есть. Однако, при декомпиляции SWF-файлов могут возникнуть сложности, так как при использовании подобных программ могут возникать ошибки в коде, которые придётся исправлять «вручную». А для пользователя, незнакомого с языком Action Script это может оказаться очень сложной задачей.

Декомпилятор SWF файлов позволяющий разобрать ActionScript код от компании Adobe

Компания Adobe представила новый инструмент для разработчиков и специалистов по безопасности — Adobe SWF Investigator, позволяющий «распотрошить» файлы SWF и провести их детальный анализ и разобрать ActionScript код.

Используя Adobe SWF Investigator можно изучить работу интегрированного в SWF файл эксплоита или выявить причину проблем в собственном Flash-контенте. SWF Investigator разработан и используется в команде, отвечающей за исправление уязвимостей во Flash. Программа распространяется под лицензией Mozilla Public Licence.

В состав Adobe SWF Investigator входит редактор шестнадцатеричных дампов, статический и динамический анализаторы, интерфейс для просмотра SWF тегов, дизасемблер ActionScript, и инструмент для выявления XSS-уязвимостей.

Текст книги «Adobe Flash. Создание аркад, головоломок и других игр с помощью ActionScript»

Представленный фрагмент произведения размещен по согласованию с распространителем легального контента ООО «ЛитРес» (не более 20% исходного текста). Если вы считаете, что размещение материала нарушает чьи-либо права, то сообщите нам об этом.

Оплатили, но не знаете что делать дальше?

Автор книги: Гэри Розенцвейг

Жанр: Программирование, Компьютеры

Текущая страница: 4 (всего у книги 37 страниц) [доступный отрывок для чтения: 9 страниц]

Размещение Flash-ролика в сети

Для того чтобы поместить ролик в сети, его необходимо вставить в HTML-страницу. Конечно, вы можете поместить ролик как swf-файл, однако в этом случае он увеличится до размера окна браузера, что вам не нужно.

При помощи двух тэгов вы можете поместить swf-файл на Web-страницу и для Internet Explorer, и для Netscape. Более того, множество настроек позволяют задавать нужный внешний вид ролика. Большинство из них автоматически применяются программой при публикации и могут быть установлены в диалоговом окне Publish Settings, показанном на рис. 1.24. Тем не менее вам не помешает знать, как выглядят эти элементы. Не знаю, как вы, а я бы скорее предпочел создать свой собственный HTML, чем использовать шаблон Flash.

Приведенный ниже элемент содержит Flash-ролик размером 550×400 под названием Sample.swf. Воспроизведение ролика начинается сразу, уровень качества – высокий, используются шрифты устройства, фоновый цвет – белый.

Длинная строка символов, начинающаяся с classid, является обозначением Flash для Internet Explorer. Часть кода, начинающаяся с codebase, дает Internet Explorer команду загрузить Flash Plug-in (программу, встраиваемую в IE для проигрывания Flash-роликов) в случае, если он еще не загружен.

Netscape не понимает тэг OBJECT, так как он используется для описания управляющих элементов ActiveX – технологии, предназначенной для встраивания мультимедийных элементов в Internet Explorer. Для Netscape необходим элемент EMBED, который дает команду браузеру использовать плагин Flash для запуска Flash-ролика.

Как видите, эти элементы очень похожи. Параметр TYPE сообщает Netscape, что это ролик Flash, а PLUGINSPAGE подсказывает, куда направить пользователя в случае, если у него не установлена программа Flash.

В отличие от элемента OBJECT элемент EMBED не содержит номер версии Flash, необходимой для воспроизведения вашего ролика. Это значит, что Netscape с Flash 8 попытается воспроизвести ваш ролик, созданный во Flash 8, даже если не сможет понять команды ActionScript. В результате ролик не будет воспроизведен должным образом. Для того чтобы предупредить пользователей, вы можете поместить на страницу предупреждение «Для воспроизведения необходим Flash 8 Player». Информацию о новейших технологиях JavaScript для определения версии Flash, установленной у пользователя, вы найдете на сайтах, приведенных в приложении А «Internet-ресурсы для разработчика Flash».

Однако недостаточно просто включить в код элементы OBJECT и EMBED. Все намного сложнее. Дело в том, что Internet Explorer может также использовать элемент EMBED для отображения мультимедийных элементов. Значит, существует вероятность того, что Internet Explorer использует оба тэга и Flash-ролик будет воспроизведен дважды на одной и той же странице.

К счастью, существует простой способ не допустить этого. Если поместить элемент EMBED внутрь элемента OBJECT, Internet Explorer проигнорирует его. Таким образом, окончательная версия кода будет выглядеть следующим образом:

Приведенный выше код исполняется отлично, однако создает одну проблему: почти каждый параметр должен повторяться дважды, один раз в элементе OBJECT, второй – в элементе EMBED. Если вы вносите какие-либо изменения, не забудьте сделать это в обоих тэгах.

Илон Маск рекомендует:  Эффекты с изображениями

Теперь, узнав, как связаны Flash и ActionScript, вы готовы стать программистом на ActionScript. В следующей главе мы начнем изучение Action-Script.

Введение в ActionScript

• Урок 1. Что такое код ActionScript и где его размешать

• Урок 2. Использование окна Actions

• Урок 3. Ваша первая программа на ActionScript

• Урок 4. Контроль воспроизведения ролика

• Урок 5. Создание кнопок для пользователя

• Урок 6. Анимация при помоши ActionScript

• Урок 7. Возможность управления клипами пользователем

• Урок 8. Использование переменных

• Урок 9. Выполнение операций

• Урок 10. Условные выражения

• Урок 12. Текст и строки

• Урок 13. Создание функций

• Урок 14. Массивы

Вы сможете изучить ActionScript и научиться программировать на нем в двух случаях: если у вас есть опыт программирования на других языках или вы не имеете опыта программирования, но умеете создавать графику и анимацию во Flash.

В начале данной главы мы опишем основные элементы ActionScript, а затем рассмотрим ряд практических примеров. За 24 простых урока вы научитесь программированию на ActionScript. Данная глава содержит первые 14 уроков, в которых рассказывается об основных командах ActionScript. Глава 3 «Элементы ActionScript для создания игр» содержит еше 10 уроков.

Урок 1. Что такое код ActionScript и где его размещать

ActionScript – это язык программирования, используемый программой Flash MX. По сравнению с главной временной шкалой, позволяюшей создавать лишь линейную анимацию, ActionScript расширяет возможности программирования. При помоши ActionScript ваш ролик будет реагировать, например, на выбор, делаемый пользователем, или на другие события. ActionScript позволяет управлять элементами, которые видит пользователь, и вместо простой анимации показывать нелинейные презентации, интерактивные приложения или игры.

ActionScript, используемый Flash 8, был создан на основе двух источников. Первый – это набор макрокоманд, взятый из предыдуших версий Flash, в основном Flash 4, который содержал схожий, но очень простой язык программирования. Другим источником оказался JavaScript – язык, используюшийся для создания небольших программ для HTML-страниц в Internet Explorer и Netscape. Новый язык стал популярен среди разработчиков Web-страниц, которые являются основными пользователями Flash 8. Для того чтобы упростить изучение ActionScript, многие новые команды и синтаксис были приведены к виду, напоминаюшему JavaScript.

Программы ActionScript представляют собой списки инструкций, которые выполняются программой Flash и могут быть помешены в различные места Flash-ролика. Если вы знаете, куда поместить сценарий, это уже полдела. Давайте рассмотрим несколько мест, куда может быть помешен сценарий, а также в каких случаях он будет использован программой.

Вы можете помешать сценарии в ключевые кадры главной временной шкалы вашего ролика. Для этого выделите ключевой кадр на главной временной шкале и нажмите F9. На экране появится диалоговое окно Actions – Frame (Действия – Кадр).

Сценарии кадра могут содержать два типа элементов. Первый – это набор команд, исполняемых при воспроизведении кадра ролика. Команды исполняются друг за другом, пока не будет достигнут конец сценария.

Вторым типом элемента, включаемого в кадровый сценарий, является функция. Функции – это элементы кода, которые могут быть многократно использованы командами в сценариях кадра, а также другими сценариями ролика.

Сценарии для кнопок

Вы также можете задавать сценарии для кнопок. Прежде всего вам следует создать кнопку как элемент библиотеки. Затем, если необходимо, переташите кнопку на рабочее поле. Выделите ее и нажмите F9 для того, чтобы вызвать диалоговое окно Actions. В случае, если диалоговое окно уже на экране, сценарий кнопки будет отображен при ее выделении.

Теперь окно Actions имеет заголовок Actions – Button (Действия – Кнопка). Любой сценарий, введенный здесь, будет выполнен кнопкой. Однако вы не можете просто ввести набор команд. Вы должны запрограммировать реакцию кнопки на выполнение различных событий, например на ее нажатие, помешение над ней курсора и т. д. Код, обрабатываюший подобные события, называется программой-обработчиком. Сценарий кнопки представляет собой набор из одного или нескольких обработчиков.

Вы также можете назначить сценарий клипу. Для этого прежде всего создайте клип и сохраните его как элемент библиотеки. Затем поместите копию клипа на рабочее поле. Выделив копию клипа на рабочем поле, вызовите окно Actions, оно будет иметь заголовок Actions – Movie Clip (Действия – Клип).

Аналогично сценарию кнопки вы не можете просто ввести набор команд. Команды должны быть помешены в программы-обработчики, реагируюшие на события клипов. Однако, в отличие от кнопок, клипы реагируют на совершенно другой набор событий.

В следующих разделах мы рассмотрим примеры сценариев кадра, сценариев для кнопок, а также сценариев клипов.

Урок 2. Использование окна Actions

Для программирования в ActionScript вы будете использовать окно Action-Script. Окно имеет два режима: обычный и эксперта. В нормальном режиме окно функционирует как окно Actions программы Flash 4. При выборе команд, функций, операторов и других элементов синтаксиса в левой части окна элемент автоматически помещается в программу ActionScript в правой части окна.

На рис. 2.1 показан обычный режим окна Actions. Однострочная программа, содержащая команду gotoAndPlay, была помещена в программу в правой части окна двойным щелчком мыши по ее названию в списке слева. При выборе команды справа ее описание появляется в нижней части окна. Вы можете изменить эту информацию при помощи выпадающих списков и текстовых полей. В нашем примере был выбран тип Frame Label (Метка кадра) и кадр «My Frame Name». Команда в окне будет соответственно изменена.

Рисунок 2.1. Обычный режим окна Actions позволяет выбирать команды и настраивать их

Что касается меня, то я создаю все программы в режиме эксперта окна Actions. Название режима немного обманчиво и подразумевает, что в нем будет сложнее работать. В действительности все наоборот. В экспертном режиме окно Actions превращается в нечто похожее на простой текстовый редактор, где вместо выбора кода из списка вы его просто вводите. Теперь в окне легче работать, однако при этом можно ввести и неправильный код.

Для переключения между обычным и экспертным режимами используйте всплывающее меню Properties (Свойства), которое можно вызвать, щелкнув по небольшой стрелке в правом верхнем углу окна Actions (рис. 2.1) или нажав комбинацию клавиш Command+N и Command+E (Macintosh) или Ctrl+N и Ctrl+E (Windows). Перед тем как использовать сочетание клавиш, не забудьте сделать окно активным, в противном случае данные команды выполнят совершенно другие действия.

На рис. 2.2 показано окно Actions в экспертном режиме. Теперь вы не можете изменить свойства команды в нижней части окна. Тем не менее в вашем распоряжении имеется список команд левой части окна, которые могут быть добавлены в программу двойным щелчком мыши.

Рисунок 2.2. Экспертный режим позволяет набирать листинг программы непосредственно в окне

В отличие от обычного режима вы можете вводить команды непосредственно в окне.

Определить, какой режим ActionScript следует выбрать, не трудно. Для того чтобы написать что-либо более сложное, чем элементарная программа, необходимо использовать экспертный режим. В обычном режиме вы не сможете ввести элементы синтаксиса, необходимые для настоящего программирования.

С другой стороны, обычный режим является прекрасным обучающим инструментом. Вам не придется вспоминать или искать в справочной литературе синтаксис каждой команды, обычный режим подскажет вам ее написание. Это поможет быстро изучить команды наподобие gotoAndPlay [3] .

Урок 3. Ваша первая программа на ActionScript

Первая команда, которую вы изучите, – trace, которая предназначена для передачи информации в окно Flash Output. Окно Output представляет собой небольшое текстовое окно, выводимое на экран во время предварительного просмотра ролика во Flash. Обычно оно используется для вывода отладочных сообщений при разработке программы.

Хотя в действительности данная команда не будет применяться в законченном Flash-ролике, приводимый здесь пример наглядно демонстрирует, что при помощи ActionScript вы можете заставить Flash выполнить указанные вами действия.

Для начала создайте новый Flash-ролик. При этом автоматически создается временная шкала с одним слоем и одним ключевым кадром. Выделив его и нажав F9, вызовите окно Actions. Затем при помощи всплывающего меню в правом верхнем углу окна переключите его в экспертный режим.

Теперь вы сможете поместить курсор в пустое программное поле в правой части окна Actions. Введите следующую строку:

trace («Hello World!»);

Точка с запятой ставится в конце каждой команды, как в примере с trace.

Команда trace – это встроенная функция Flash. В круглых скобках указываются параметры функции. Параметры – это входные данные, необходимые функциям для выполнения их задачи. Команда trace использует один параметр: строку, которая помещается в окно Output. Некоторые функции содержат один параметр и более, в то время как другие – ни одного.

Ваш экран должен выглядеть примерно так, как изображено на рис. 2.3. Здесь вы видите один слой и один кадр на временной шкале. Окно Actions имеет заголовок Actions – Frame. Это обозначает, что содержащийся в окне код ActionScript относится к выбранному в данный момент ключевому кадру. Единственным элементом программного листинга является команда trace.

Рисунок 2.3. Программа «Hello World» описывает первый и единственный кадр

Попробуйте самостоятельно создать данный ролик. Готовый ролик размещен на Web-странице в файле Helloworld.fla в каталоге данной главы.

Для того чтобы запустить программу, выберите команду Control → Test Movie (Контроль → Запустить пробное воспроизведение ролика). В течение секунды Flash создаст swf-файл и откроет его в окне предварительного просмотра. Окно останется пустым, так как в ролике нет никакой графики. Затем будет открыто окно Output со словами «Hello World!» (рис. 2.4).

Рисунок 2.4. В окне Output содержится результат выполнения команды trace

Это был важный шаг в изучении ActionScript. Мы дали Flash команду. В ответ Flash показал, что он понимает ее и слушается вас.

Программа «Hello World» появилась вместе с первыми языками программирования и стала традиционной. Это самая элементарная программа, которая обычно приводится как первый пример при обучении любому языку программирования, будь то ассемблер громадной ЭВМ, Basic, Pascal, C, Java или ActionScript. Только что вы прошли по следам миллионов программистов, начинающих изучать свое ремесло.

Урок 4. Контроль воспроизведения ролика

В уроке 2 «Использование окна Actions» мы бегло ознакомились с командой ActionScript gotoAndPlay. Эта команда приказывает Flash не принимать во внимание следующий кадр временной шкалы, а вместо этого перейти к совершенно другому кадру. При помощи команды gotoAndPlay вы можете контролировать воспроизведение Flash-ролика.

Создайте новый Flash-ролик. В этот раз он будет содержать несколько кадров. Создайте последовательность из четырех ключевых кадров и присвойте им имена начиная с «parti» и заканчивая «part4». Эти кадры представляют собой четыре части анимации. Кроме этого, в каждый из четырех кадров следует поместить статический текст, сообщающий пользователю о том, какую часть он в данный момент видит на экране.

В примере Gotoandplay.fla в каждый из четырех ключевых кадров был помещен статический текст «PART 1» – «PART 4». Текст «PART 1» появится в ключевом кадре «parti», текст «PART 2» – в ключевом кадре «part2» и т. д.

Ключевые кадры разделены несколькими кадрами, чтобы были видны названия меток на главной временной шкале. На рис. 2.5 показана главная временная шкала, содержащая четыре метки. Выбран второй ключевой кадр, поэтому на рабочем поле отображен текст «PART 2».

Рисунок 2.5. Ролик содержит четыре ключевых кадра и сценарий, помещенный во второй ключевой кадр. Выбран второй ключевой кадр, и в окне Actions отображается соответствующий сценарий

Выделив второй ключевой кадр, откройте окно Actions. Затем введите в окне следующую команду:

Обратите внимание, что после добавления в ключевой кадр кода Action-Script на временной шкале в соответствующем кадре появляется строчная буква «а».

Это единственный код ActionScript в ролике. При воспроизведении ролик начинется с ключевого кадра «parti» и на экране появится текст «PART 1». Затем ролик будет двигаться по временной шкале до ключевого кадра «part2», где находится код ActionScript. По команде Flash перейдет к ключевому кадру «part4». При этом текст «PART 2» не успеет появиться на экране [4] . Ролик будет находиться в кадре «part4», на экране окажется текст «PART 4».

Ролик продолжит движение по временной шкале до конца. Затем возвратится к первому кадру и опять покажет текст «PART 1». Этот цикл повторяется бесконечно.

При помощи ActionScript вы заставили Flash отступить от последовательного воспроизведения анимации. Ролик должен был последовательно проигрываться с кадра «parti» к «part2», затем к «part3» и к «part4», однако по вашему сценарию он пропустил сразу два кадра – «part2» и «part3». С ActionScript вы получаете возможность контролировать порядок воспроизведения кадров Flash-ролика.

Исходный файл: Nonlinear.fla

Давайте рассмотрим другой пример. По той же схеме создайте небольшие ключевые кадры в конце каждой части ролика. Мы будем создавать сценарии, воспроизводимые не в начале каждой части, а в ее конце.

На рис. 2.6 показано устройство ролика, включающего четыре маркированных ключевых кадра, как и в предыдущем примере, а также четыре ключевых кадра в конце каждой части ролика. В этих немаркированных кадрах содержится код.

Рисунок 2.6. Ролик состоит из четырех частей. Каждая часть начинается с маркированного ключевого кадра и заканчивается немаркированным ключевым кадром, содержащим небольшой сценарий

Ключевой кадр, следующий за «parti», содержит код:

Ключевой кадр, следующий за «part2», содержит код:

Ключевой кадр, следующий за «part3», содержит код:

Ключевой кадр, следующий за «part4», содержит код:

При запуске ролика из файла Nonlinear.fla на экране появляется надпись «PART 1». Затем ActionScript задает переход ролика не к кадру «part2», а к «part3». Таким образом, ролик переходит от надписи «PART 1» к «PART 3». Затем, после кадра «part3», ролик возвращается к «part2», а после него к «part4». Весь ролик воспроизводится в таком порядке: «PART 1», «PART 3», «PART 2» и «PART 4». Эта последовательность затем повторяется.

При помощи ActionScript вы полностью заменили обычную анимационную последовательность на свою собственную.

Приведенные выше примеры дают предсказуемый результат, однако у вас есть возможность использовать команду gotoAndPlay по-другому, например в сочетании с кнопками, чтобы предоставить пользователю контроль над порядком воспроизведения ролика.

Урок 5. Создание кнопок для пользователя

Исходный файл: Stop.fla

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

Предоставить пользователю больше контроля над воспроизведением ролика можно, прежде всего лишив этого контроля Flash. Flash начинает воспроизведение анимации с первого кадра, затем переходит к следующему и т. д. При помощи команды stop() вы можете остановить воспроизведение анимации на первом кадре.

На рис. 2.7 изображен ролик из файла Stop.fla. Он состоит из четырех кадров, каждому из которых соответствует метка на временной шкале и текст на рабочем поле. В первый кадр включен небольшой сценарий с командой stop(). Воспроизведение ролика начинается и заканчивается в кадре 1.

Рисунок 2.7. Данный ролик состоит из последовательности нескольких кадров, однако команда stop() останавливает его воспроизведение на первом кадре

Теперь мы можем предоставить немного самостоятельности пользователю. Создайте простой эталон кнопки и поместите его на рабочий стол. Не следует выдумывать ничего необычного. В примере кнопка представляет собой маленький кружок.

Следующим вашим шагом будет создание нового слоя с одним кадром. Теперь в ролике будут участвовать одни и те же элементы. В данный слой мы поместили четыре различных копии одной и той же кнопки из библиотеки. Результат изображен на рис. 2.8.

Рисунок 2.8. Данный ролик состоит из двух слоев. Первый слой разделен на четыре части, которые содержатся в четырех кадрах, второй включает один ключевой кадр

В первом кадре данного ролика будет использоваться та же самая команда stop(), которая остановит воспроизведение ролика сразу после его начала. В нижней части экрана размещены четыре кнопки. Каждой из них будет приписан отдельный сценарий.

Первый сценарий изображен на рис. 2.8. Первая кнопка выбрана, и в окне ActionScript отображается ее сценарий:

Так выглядит обычный сценарий кнопки. Поведение кнопки во время выполнения различных действий с ней задается программами-обработчиками. В нашем случае это действие press. Синтаксический элемент on обозначает начало программы-обработчика. В фигурные скобки заключаются команды реакции на события.

В нашем примере используется команда gotoAndStop – разновидность команды gotoAndPlay. В отличие от первой команды, задающей переход к новому кадру и остановку воспроизведения ролика, вторая команда переходит к другому кадру и запускает его воспроизведение.

Помимо этого сценария, три подобных приписаны трем другим кнопкам. Единственным их отличием является то, что они задают переход к кадрам «part 2», «part 3» и «part 4».

Исходный файл: Navigation.fla

При запуске данного файла начинается воспроизведение ролика, остановленного в первом кадре. Теперь пользователь может щелкнуть по одной из четырех кнопок для перехода к одному из четырех оставшихся кадров. Попробуйте запустить ролик из файла Navigation.fla.

Это ваш первый настоящий Flash-ролик. Вместо простого текста «PART 1» – «PART 4», показываемого в каждом ключевом кадре, вы можете поместить презентацию наподобие той, которая создается в PowerPoint или других программах. Здесь демонстрируются возможности Flash, выходящие за рамки простой анимации.

Представленный фрагмент произведения размещен по согласованию с распространителем легального контента ООО «ЛитРес» (не более 20% исходного текста). Если вы считаете, что размещение материала нарушает чьи-либо права, то сообщите нам об этом.

Мультимедийный скриптовый язык ActionScript

Происхождение 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 технологии

Flash-технологии, или, как их еще называют, технологии интерактивной веб-анимации, были разработаны компанией Macromedia и объединили в себе множество мощных технологических решений в области мультимедийного представления информации. Ориентация на векторную графику в качестве основного инструмента разработки flash-программ позволила реализовать все базовые элементы мультимедиа: движение, звук и интерактивность объектов. При этом размер получающихся программ минимален и результат их работы не зависит от разрешения экрана у пользователя — а это одни из основных требований, предъявляемых к интернет-проектам.

По сути, Flash Player представляет собой виртуальную машину, на которой выполняется загруженный из Интернета код flash-программы.

В основе анимации во Flash лежит векторный морфинг, то есть плавное «перетекание» одного ключевого кадра в другой. Это позволяет делать сложные мультипликационные сцены, задавая лишь несколько ключевых кадров. Производительность Flash Player при воспроизведении анимации в несколько раз превышает производительность виртуальной машины JavaScript в браузерах, поддерживающих предварительный стандарт HTML5, хотя во много раз уступает приложениям, работающим вообще без использования виртуальных машин.

Flash использует язык программирования ActionScript, основанный на ECMAScript.

1 мая 2008 компания Adobe объявила о начале проекта Open Screen Project (англ.)русск. (Веб-сайт проекта). Цель проекта — создание общего программного интерфейса для персонального компьютера, мобильных устройств и бытовой электроники, что означает одинаковое функционирование одного приложения под всеми перечисленными видами устройств. В рамках проекта:

  • Снимаются ограничения на использование спецификаций SWF и FLV/F4V.
  • Публикуются API для портирования Adobe Flash Player на различные устройства.

В поддержку проекта и распространение платформы Flash на мобильных устройствах на данный момент выступило 58 компаний, среди которых AMD, ARM, Google, HTC, Intel, Motorola, Nokia, NVIDIA, QNX, Sony Ericsson и др.

Flash Player портирован на мобильную платформу Android, выпущены мобильные устройства с аппаратным ускорением flash-приложений (включая AIR-приложения).

Некоторые производители ПО для мобильных устройств пытаются заменить или ограничить распространение Flash на свои новые мобильные платформы:

  • Apple на HTML5 для iPhone, iPod touch и iPad
  • Microsoft на Silverlight для Windows Phone 7
  • Oracle на JavaFX

Во 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

Однажды некий наивный дизайнер спросил меня: «К чему мне связываться с 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-приложений — чрезмерная нагрузка на центральный процессор, связанная с неэффективностью виртуальной машины 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.

Структура SWF-файла

Когда мы говорим Flash, то можем подразумевать совершенно разные вещи даже в рамках терминов web-технологии. Чтобы не было путаницы, будем использовать:

  • Flash – технология web-анимации в целом;
  • Flash player – программа, библиотека ActiveX которая выполняет отображение flash;
  • Standalone Flash player – приложение (exe-файл), отображающее flash;
  • Flash IDE, Adobe Flash, Flash Professional – среда разработки, предоставляемая фирмой Adobe (ранее Macromedia);
  • FLA – проектный файл (исходный) анимации для Flash IDE;
  • Movie, мувик – цельная сущность web-анимации на этапе разработки;
  • SWF – непосредственно конечный файл анимации.

И так, когда мы открываем 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.

Что такое код swf_actionprevframe

Недавно мне нужно было сделать небольшой SWF-ролик с парой кнопок и несколькими картинками. Так как мой основной рабочий инструмент — Linux, то и делать ролик решил с помощью «открытого» программного обеспечения. Кстати, это же программное обеспечение доступно и под Windows.

Компания Adobe в данный момент предоставляет Flex4 SDK — бесплатное программное обеспечение для компиляции SWF-файлов из исходников, написанных на Action Script 3.0 (далее — AS3). Flex4 SDK содержит все библиотеки Flex, библиотеки Flash MX, и компилятор mxmlc , с помощью которого можно компилировать в формат SWF как файлы *.mxml (формат Flex), так и AS3-программы.

Сразу скажу пользователям Windows — Flex4 SDK есть и под Windows, однако лучше сразу установить и среду FlashDevelop. Это удобная OpenSource среда разработки, которая после правильной настройки включает в себя все нужные части из Flex SDK. Она предназначена для комфортного написания и компилирования AS3-кода. Так как FlashDevelop завязан на Win API и библиотеку .NET, его портирование под Linux затруднено, поэтому в Linux приходится довольствоваться только Flex4 SDK. В любом случае, приведенный в статье код скомпилируется не только в «чистом» Flex4 SDK, но и в настроенном FlashDevelop.

В этой статье я приведу код небольшого приложения, которое компилируется с помощью компилятора mxmlc в SWF файл. Называться программа будет «Просмотрщик картинок». Окно программы будет содержать следующие элементы:

В коде будет показано, как реализуются следующие вещи:

  • Как импортировать картинки вовнутрь SWF
  • Как сделать простую кнопку
  • Как сделать функцию-обработчик клика по кнопке
  • Как сделать кнопку, при клике на которую следует переход на заданный URL
  • Как показать и двигать картинку на экране
  • Как сделать основной цикл программы (main loop)
  • Как сделать прелоадер (preloader)

Полученных знаний будет достаточно, чтобы написать небольшую Flash-игру на чистом Action Script v.3.0. Итак, начнём.

Приложение будет состоять из трех файлов:

  • Main.as — основной файл программы
  • PushButton.as — класс, реализующий кнопку
  • Preloader.as — класс, реализующий прелоадер

Назначение файлов Main.as и Preloader.as , в принципе, понятно. А зачем нужен PushButton.as ? Неужели во Flash нет готовой реализации обычной кнопки? Да, нет. На дворе 2010 год, а во Flash добавить обычную кнопку одной командой невозможно. Точнее, классическая кнопка есть, но находится она в библиотеке Flex. А использовать одновременно объекты Flex и более привычные объекты Flash нельзя. Мы будем реализовывать программу с помощью объектов Flash (ибо Flex — это отдельная большая песня), так что кнопку нам придется сделать самостоятельно.

import flash.display.Sprite;
import flash.text.TextField;
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.utils.getDefinitionByName;
import PushButton; // Класс кнопки, лежащий в PushButton.as

// Параметры SWF-файла
[SWF(w )]

// Интегрирование прелоадера, лежащего в Preloader.as
[Frame(factory )]

// Основной класс программы
public class Main extends Sprite
<

// Картинки кадров (будут храниться в массиве как DisplayObject)
public var kadr:Array=new Array();

// Параметры картинок-кадров
public var kadr_num:int=3; // Количество картинок-кадров
public var kadr_current_num:int=1;
public var kadr_move_step:int=10;
public var kadr_size_x:int=464;
public var kadr_size_y:int=380;

// Текущее состояние программы
public var state:String=»wait_action»;

// Конструктор основного класса
public function Main():void
<
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
>

// Точка входа, после того как загрузился весь ролик
public function init(e:Event = null):void
<
var i:int;

// Отключение обслуживания прелоадера
removeEventListener(Event.ADDED_TO_STAGE, init);

// Библиотека картинок
[Embed(source=»logo.png»)] var symbol_logo:Class;
[Embed(source=»kadr_1.png»)] var symbol_kadr_1:Class;
[Embed(source=»kadr_2.png»)] var symbol_kadr_2:Class;
[Embed(source=»kadr_3.png»)] var symbol_kadr_3:Class;

// Загрузка (создание инстанта) картинки логотипа из библиотеки
var logo:DisplayObject=new symbol_logo();

// Загрузка (создание инстанта) картинок с кадрами из библиотеки
kadr[1]=new symbol_kadr_1();
kadr[2]=new symbol_kadr_2();
kadr[3]=new symbol_kadr_3();

// Для загрузки (создание инстанта) можно попробовать другой код:
/*
for(i=1; i =kadr_size_y)
<
// Уехавший кадр скрывается
kadr[kadr_current_num].y=0;
kadr[kadr_current_num].visible=false;

// Приехавший кадр выравнивается
kadr[kadr_current_num-1].y=0;

// Обработка кнопки назад (т.е. вверх)
private function back_click(event:MouseEvent):void
<
if(state==»wait_action»)
<
// Перемещаться нельзя, если начальный кадр
if(kadr_current_num==1) return;

kadr[kadr_current_num-1].x=0;
kadr[kadr_current_num-1].y=(-kadr_size_y);
kadr[kadr_current_num-1].visible=true;
>
>

// Обработка кнопки вперед (т.е. вниз)
private function forward_click(event:MouseEvent):void
<
if(state==»wait_action»)
<
// Перемещаться нельзя, если конечный кадр
if(kadr_current_num==(kadr_num)) return;

kadr[kadr_current_num+1].x=0;
kadr[kadr_current_num+1].y=kadr_size_y;
kadr[kadr_current_num+1].visible=true;
>
>

// Обработка кнопки перехода по указанному URL
private function go_click(event:MouseEvent):void
<
var url:String=»https://webhamster.ru»;
var url_request:URLRequest=new URLRequest(url);
navigateToURL(url_request, «_self»);
>

package
<
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.utils.getDefinitionByName;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.LoaderInfo;

public class Preloader extends MovieClip
<

private var preloader_text:TextField;

// Геометрия SWF файла
private var swf_w:int=550;
private var swf_h:int=380;

// Инициализация загрузчика
public function Preloader()
<
if (stage) <
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
>
addEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioError);

// Текст о состоянии загрузки выводится на экран
preloader_text=new TextField();
preloader_text.text=»Load 0 % «;
preloader_text.textColor=0xA0A0A0;
preloader_text.selectable=false;
preloader_text.autoSize=TextFieldAutoSize.CENTER;
preloader_text.x=swf_w/2-preloader_text.width/2;
preloader_text.y=swf_h/2;
addChild(preloader_text);
>

private function ioError(e:IOErrorEvent):void
<
trace(e.text);
>

// Метод, вызываемый при изменении количества загруженных байт
private function progress(e:ProgressEvent):void
<
// Обновляется текст загрузчика
preloader_text.text=»Load «+(Math.round((loaderInfo.bytesLoaded*100)/loaderInfo.bytesTotal))+» %»;
>

private function checkFrame(e:Event):void
<
if (currentFrame == totalFrames)
<
stop();
loadingFinished();
>
>

// Завершение загрузки
private function loadingFinished():void
<
removeEventListener(Event.ENTER_FRAME, checkFrame);
loaderInfo.removeEventListener(ProgressEvent.PROGRESS, progress);
loaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, ioError);

// Текст загрузчика скрывается
preloader_text.visible=false;

private function startup():void
<
var main ) as Class;
if (parent == stage) stage.addChildAt(new mainClass() as DisplayObject, 0);
else addChildAt(new mainClass() as DisplayObject, 0);
>
>
>

import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;

public class PushButton extends SimpleButton
<
private var button_x:Number=0;
private var button_y:Number=0;
private var button_w > private var button_height:Number=0;
private var button_text:String=»»;

public function PushButton(buttonX:Number,
buttonY:Number,
buttonWidth:Number,
buttonHeight:Number,
buttonText:String)
<
button_x=buttonX;
button_y=buttonY;
button_w > button_height=buttonHeight;
button_text=buttonText;

upState=button_sprite(0x888888);
overState=button_sprite(0x999999);
downState=button_sprite(0xAAAAAA);
hitTestState=button_sprite(0xBBBBBB);

private function button_sprite(color:uint = 0x888888):Sprite
<

var b_sprite:Sprite=new Sprite();

b_sprite.graphics.lineStyle(1);
b_sprite.graphics.beginFill(color);
b_sprite.graphics.drawRect(0, 0, button_width, button_height);
b_sprite.graphics.endFill();

var button_label:TextField;
button_label=new TextField();
button_label.text=button_text;
button_label.selectable = false;
button_label.autoSize=TextFieldAutoSize.CENTER;
button_label.x=(button_width-button_label.textWidth)/2-1;
button_label.y=(button_height-button_label.textHeight)/2-2;

Пара пояснений. Весь ролик существует в одном кадре. Основной цикл (main loop) организован с помощью обработки события перехода на начало кадра. Так как ролик состоит из одного кадра, то main loop вызывается с частотой смены SWF-кадров, обычно это 12 раз в секунду.

Основной класс программы (класс Main) унаследован от объекта Sprite. Поэтому основной объект можно рассматривать как холст, на котором происходят всякие преобразования. На него можно ложить элементы с помощью метода addChild(). Эти элементы можно скрывать и показывать, можно перемещать, меняя их координаты.

Запустить компиляцию можно с помощью следующей команды:

mxmlc -debug Main.as

Опция -debug нужна, чтобы нормально работала функция trace() . Путь к компилятору mxmlc нужно добавить в переменную PATH, либо указывать полный путь к бинарнику компилятора. В данный момент, в Flex4 SDK компилятор располагается в подкаталоге /bin каталога, куда был установлен Flex4 SDK.

Илон Маск рекомендует:  Информация об аудио файле на PHP
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL