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

20.07.2019 Видео

Не думайте, что изучив главу "Введение в ActionScript" и главу "Элементы ActionScript" для создания игр", вы уже научились программировать. Существует разница между умением создавать код на ActionScript и опытом программирования.

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

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

Анализ задачи

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

Предположим, вы хотите создать игру Space Invaders (Космические захватчики). Это сложная задача. Однако, разбив ее на небольшие части, вы поймете, что решить ее довольно просто.

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

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

Продолжайте ваши рассуждения дальше. Как вы узнаете, что пользователь нажал на клавишу с изображением левой стрелки? Как перемещаете корабль влево? А как насчет клавиши с изображением правой стрелки и перемещения корабля вправо? Решив эти небольшие задачи, вы решите большую задачу перемещения корабля. После этого можете переходить к следующей части программы. Этот процесс требует терпения, которое является неотъемлемым аспектом программирования. Следует проявить терпение и по отношению к себе. Пока вы не стали экспертом в ActionScript, вам придется время от времени отвлекаться от программирования, чтобы посмотреть какую-либо еще неизвестную вам команду или изучить новый материал. Вы не сможете писать сложные программы, не восполнив некоторые пробелы в ваших знаниях.

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

Правила программирования

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

  • комментарии - следует приобрести привычку добавлять к коду комментарии. Даже строки, кажущиеся ясными в данный момент могут стать непонятными, если вы вернетесь к ним через месяц;
  • имена переменных - используйте имена переменных, отражающие их назначение. Они дополнят комментарии и помогут понять код, когда вы вернетесь к нему позднее;
  • имена функций - все вышесказанное относится и к именам функций. Они должны описывать выполняемые ими действия;
  • чем короче, тем лучше - во Flash нет ограничения на длину функции. Тем не менее, если вы напишите функцию длиной в 100 строк, позднее вам будет непросто ее редактировать. Лучше разбить функцию на задачи и поместить каждую задачу в отдельную функцию;
  • включайте в код многократно используемые функции - во время программирования не забудьте подумать о том, как можно применить ту или иную функцию к схожей или аналогичной задач другой части вашей программы. Допустим, вам необходима функция, добавляющая одно очко к счету игрока. Постарайтесь использовать в ней параметр, позволяющий добавлять к счету не только одно, но и любое другое количество очков;
  • старайтесь обходиться без жесткого кодирования - под жестким кодированием подразумевается включение в ваш код конкретных чисел. Допустим, для описания правой стороны рабочего поля в вашем коде используется значение 550, оно будет жестко закодировано в программу. Если вы решите расширить рабочее поле ас 600 пикселов, вам придется изменять каждое употребление значения 550 в коде. Лучше в самом начале задать переменной под названием screenRightSide значение 550 и использовать эту переменную на протяжении всей программы;
  • хорошая организация - хороший программист, несомненно, должен уметь организовывать различные элементы программы. На-пример, функции следует помешать не в разные кадры, а в один кадр вашего ролика. Кроме этого, старайтесь сгруппировать функции согласно выполняемым ими задачам.

Отладка

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

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

Информация о программе может также размещаться в окне Output при помощи команды trace . Она поможет вам отследить определенные моменты программы и значение некоторых переменных в эти моменты.

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

Тестирование

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

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

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

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

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

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

Flash Player - плагин, который установлен в веб-браузере для воспроизведения файлов 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 с файлом класса (Class). Файлы класса имеют долгую историю в мире разработки. С их помощью вы можете указать как публичные, так и приватные классы. Ключевое слово Private ограничивает использование атрибута, определенного только в этом классе, а не совместно с другими классами. Это полезно, когда вы разрабатываете инструкции, которые должны быть выполнены в отдельном пространстве в частном порядке.

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

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

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

    Управление данными.

    Управление текстом.

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

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

Сходства ActionScript 2.0 и 3.0

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

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

Var str1:String = new String("Привет, "); var str2:String = new String("мир"); trace(str1 + str2);

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

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

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

    Box2D Physics Engine;

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

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

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

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

Какие функции выполняют компьютерные программы

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

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

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

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

В сущности, все функции отдельной инструкции программы сводятся к управлению несколькими битами информации, хранящимися в памяти компьютера. Простым примером является сложение двух чисел и сохранение результата в памяти компьютера. Более сложным примером является рисование прямоугольника на экране компьютера и создание программы перемещения этого прямоугольника в другое место экрана. Определенная информация о прямоугольнике сохраняется в памяти компьютера: координаты x, y расположения прямоугольника, ширина и длина сторон, цвет и так далее. Каждый бит этой информации хранится в памяти компьютера. Алгоритм программы перемещения прямоугольника в другое место на экране включает такие действия, как присвоение координате x значения 200, а координате y - значения 150. Другими словами, необходимо присвоить новые значения координатам x и y. Компьютер выполняет некоторые скрытые от пользователя операции с этими данными для фактического преобразования этих чисел в изображение, показанное на экране компьютера. Однако на базовом уровне достаточно знать то, что процесс перемещения прямоугольника на экране включает только изменение битов данных в памяти компьютера.

Переменные и постоянные

В основном процесс программирования включает изменение только части данных в памяти компьютера. Следовательно, важно иметь способ представления части данных в программе. Переменная является именем, которое представляет значение в памяти компьютера. При записи операторов для управления значениями имя переменной записывается вместо значения. Когда компьютер обнаруживает имя переменной в программе, он обращается к своей памяти и использует то значение, которое там находится. Например, если есть две переменные с именами value1 (значение 1) и value2 (значение 2), каждая из которых содержит число, тогда для сложения этих чисел можно написать следующую инструкцию:

Value1 + value2

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

В ActionScript 3.0 переменная фактически состоит из трех различных частей:

    имени переменной

    типа данных, которые могут быть сохранены в переменной

    фактического значения, сохраненного в памяти компьютера

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

Var value1:Number;

В этом примере определены команды создания переменной value1 , в которой могут храниться только значения с типом Number. (Number - это определенный тип данных в среде ActionScript.) Можно также сохранить значение прямо в переменной:

Var value2:Number = 17;

Adobe Flash Professional

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

Константа аналогична переменной. Это имя, которое представляет значение с заданным типом данных в компьютерной памяти. Разница состоит в том, что для постоянной значение присваивается только один раз во время выполнения приложения ActionScript. Если постоянной присвоено значение, оно больше не изменяется в приложении. Синтаксис для определения константы почти совпадает с синтаксисом для определения переменной. Единственным отличием является то, что ключевое слово const используется вместо ключевого слова var:

Const SALES_TAX_RATE:Number = 0.07;

Константа используется для определения значения, которое задействовано на многих стадиях проекта и которое не изменяется при нормальных обстоятельствах. Использование постоянных вместо литеральных значений делает код более удобочитаемым. К примеру, рассмотрим две версии одного кода. Один код используется для умножения цены на значение переменной SALES_TAX_RATE . Другой код используется для умножения цены на 0,07 . Версия, в которой используется константа SALES_TAX_RATE , более проста в понимании. Кроме того, предположим, что значение, заданное константой, изменяется. Если для представления значения в проекте используется константа, можно изменить значение в одном месте (объявление константы). Напротив, потребуется изменить его в различных местах при использовании запрограммированных значений литералов.

Типы данных

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

    Строки: текстовые значения, такие как имя или текст главы книги

    Числовые: ActionScript 3.0 включает три специфических типа числовых данных:

    • Number: любые целые или дробные числовые значения

      int: целые числа без дробей

      uint: беззнаковые (неотрицательные) целые числа

    Логические: значения типа «истинно - ложно», такие как состояния выключателя или равенство или неравенство двух значений

Простые типы данных представляют единичные порции информации: например, одно число или единичный текст. Однако большинство типов данных, определенных в среде ActionScript, являются комплексными типами данных. Они представляют набор значений в одном контейнере. Например, переменная с типом данных Date (Дата) представляет одно значение (момент времени). Тем не менее, значение даты включает несколько значений: день, месяц, год, часы, минуты, секунды и т. д., все из которых являются отдельными числами. Обычно дата считается единичным значением, и с ней можно работать как с единичным значением путем создания переменной Date. Однако в компьютере дата рассматривается как группа из нескольких значений, которые совместно определяют одну дату.

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

    MovieClip: символ фрагмента ролика

    TextField: динамическое или вводимое текстовое поле

    SimpleButton: символ кнопки

    Date: информация о единичном моменте времени (дата и время)

Двумя широко распространенными синонимами для обозначения типа данных являются класс и объект. Класс является просто определением типа данных. Он равнозначен шаблону всех объектов в типе данных, как в выражении «все переменные типа данных "Пример" имеют характеристики А, Б и В». Объект , с другой стороны, является всего лишь фактическим экземпляром класса. Например, переменную с типом данных MovieClip можно описать как объект MovieClip. Ниже одна и та же мысль выражена различными словами.

    Типом данных переменной myVariable является Number (число).

    Переменная myVariable является экземпляром Number.

    Переменная myVariable является объектом Number.

    Переменная myVariable является экземпляром класса Number.

Если Вы работаете с Flash и используете его пока что только для рисования и простой анимации, создание роликов или баннеров, но ни разу не занимались программированием в нём, то вероятно Вам очень хотелось узнать эту сторону flash-а .

Что такое ActionScript ? Как можно писать код на flash-е ? Как можно полноценно программировать во flash ? Какие инструменты для этого лучше всего использовать? В данной статье приводятся ответы на подобные вопросы.

Эта статья послужит хорошим руководством новичка в программировании под flash на ActionScript 3.0 и поможет выбрать лучшие инструменты для этого.

Что такое ActionScript?

Action Script — это объектно-ориентированный язык программирования, который добавляет интерактивность, обработку данных и многое другое в содержимое Flash-приложений.

С помощью Action Script можно создавать интерактивные мультимедиа-приложения, игры и веб-сайты.

Если Вы работаете с графической средой разработки Flash IDE (например Adobe Flash Professional CS5), но ни разу не интересовались где там можно писать программный код, то вероятно Вас уже волнует вопрос «Где же он прячется, этот AS3?».

AS3 во Flash IDE.

Создадим новый проект File — New — ActionScript 3.0 (рис. 1).

Рис 1. Создание нового проекта AS3.

Появится пустая сцена с пустым кадром на одном слое. Теперь можно выделить кадр и нажать F9 , тем самым открыть окно «Actions», в котором и находится область редактирования программного кода данного кадра.

Давайте напишем в открывшемся окне следующий код:

ActionScript

var s: String = "its my AS3 code trace!"; trace(s);

var s : String = "its my AS3 code trace!" ;

trace (s ) ;

Рис. 2. Код, написанный в редакторе Flash IDE.

Теперь можно запускать флешку (Ctrl+Enter ). Данный код создаёт переменную s типа String (строка) и присваивает ей начальное значение — строку «its my AS3 code trace! «. Далее, функцией trace() , аргументом которой выступает ново созданная переменная, данная строка (а точнее уже значение переменной s ) выводится во вкладку output , которая по умолчанию в интерфейсе IDE располагается рядом с вкладкой timeline .


Таким образом можно открывать и закрывать(на F9) редакторы кода для любого кадра флеш-приложения.

Вроде картина выходит не плохая — можно создавать разные объекты с анимациями (MovieClip ), либо статичные картинки (Sprite ) и у каждого объекта будут кадры и в каждом кадре можно запрограммировать всё что угодно. Выглядит удобно и гибко. Но это лишь на первый взгляд. Представьте что у Вас десятки объектов с десятками кадров и всем им нужно описать кодом различную или схожую логику поведения. Во втором случае (схожая логика) — это вообще означает сотни схожих строк кода, которые можно будет замучиться даже копировать из кадра в кадр. А представьте что в процессе разработки вам понадобится что-то изменить. Нет — это не дело! Не для этого хаоса был задуман язык AS3!

В добавок, если Вы поработаете редактором кода Flash IDE и, к примеру, работали в какой-нибудь другой среде программирования (Delphi, Visual Studio), то сразу заметите, что данный редактор, мягко говоря, удручает своей не удобностью и недоделанностью.

Что же делать, спросите Вы? Искать сторонние редакторы кода.

Альтернативные редакторы кода.

Самый лучший вариант для ОС Windows — это FlashDevelop (FD). Скачать свежую версию можно с сайта .

Для iOS хорошей альтернативой является FDT . Ознакомиться можно на оф. сайте .

FlashDevelop.

Т.к. я на данный момент преимущественно обитаю в Windows, то расскажу о редакторе именно под эту ОС. В будущем, когда наберусь опыта в FDT, то напишу и о нём.

В установке нет ничего сложного, качайте свежую версию с оф. сайта и устанавливайте. Редактор совершенно бесплатный и для компиляции использует Flex SDK. Во время стандартной установки FD сам позаботится об установке последнего. Всё что надо установить для FD самому — это Java .

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

После установки можно создать новый проект (Project — New Project…), откроется диалог создания проекта, как показано на рис. 4.


Как можно заметить, FD позволяет создавать не только AS3 проекты. Но сейчас нас интересует именно AS3 проект, я предпочитаю выбирать заготовку для проекта с Preloader -ом, который и выбран на рис. 4 . Далее введите имя проекта (поле Name ) и назначьте директорию проекта (поле Location ), если стоит галочка «Create directory for project» , то в директории Location будет создана папка с именем проекта (Name) и в неё уже поместятся файлы проекта, если галочка не стоит, то файлы поместятся в указанную директорию Location.

После создания проекта справа Вы увидите структуру файлов и папок проекта, откройте папку src и откройте двойным щелчком файл Main.as . После чего Вы должны наблюдать код примерно такой же, как на рис. 5.


Попробуем написать какой-нибудь код, например примерно тот же, который пробовали в Flash IDE . Писать можно после комментированной строки «// entry point» т.к. это точка где сцена уже точно создана. напишем команду trace() , на рис. 5. я уже позволил себе это деяние:]

Теперь можно скомпилировать проект (F8 ) или сразу запускать для тестирования (F5 ), после запуска в окне Output вы увидите результат работы функции trace() — вывод строки.

Результаты команды trace() можно наблюдать только во время запуска приложения из под IDE, в которой компилируется и запускается код.
При запуске файла.swf в браузере или в обычном flash-плеере результат (а т.е. отображение окна output) не будет виден никому.

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

Изучение языка AS3.

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

Лучшая книга: Колин Мук — .

Хорошее дополнение к знаниям: Джои Лотт — .

Читал в своё время ещё такую книгу: Рич Шуп — . Написано хоть и не сильно много и подробно, но для новичков сойдёт, если под рукой нет Мука.

Этих книг весьма достаточно для бодрого старта! Читайте и практикуйтесь, практикуйтесь и читайте. Нет необходимости сесть и читать эти книги от корки до корки, т.к. в процессе чтения важно закреплять знания практикой, да и Вам самим будет приятно сделать что-нибудь как можно скорее:]

Во время быстрого поиска документации в инете очень помогает оф. документация от .

Для дальнейшего развития, для хорошего осознания ООП и шаблонов проектирования (а это очень важно для хорошей ООП структуры) Вам будет незаменима следующая книга: Уильям Сандерс, Чандима Кумаранатунг — .

На этом сайте вы так же найдёте не мало аспектов программирования на AS3, накопленных моим опытом.

Или попробовать сделать свой первый прелоадер прочитав статью: Preloader своими руками.

Всего доброго и успешных проектов!

Прошлая статья была посвящена анимации. Мы создавали анимацию на основе motion tweening, shape tweening и просто составляли движение из отдельных кадров. Думаю, пора перейти к более сложной теме, рассмотрению инструмента, который создает основу для большинства качественных Flash-фильмов (Flash movies).

Этот инструмент - ActionScript - событийно-управляемый язык, встроенный во Flash. Последняя версия ActionScript, (которая присутствует во Flash 5), существенно отличается от ActionScript, который был в 4-м Flash. Если в прошлой версии, это был ограниченный набор команд, позволяющий осуществлять лишь основные действия, и вводимый с помощью не очень удобного интерфейса, то новый ActionScript - это мощный язык, с увеличенным набором команд, поддержкой классов, наследования (!), и гораздо более удобным интерфейсом.

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

Для того, чтобы овладеть ActionScript в полной мере, желательно уже иметь опыт программирования (предпочтительно на С++, JavaScript, etc.). Однако, одним из достоинств языка Flash, является то, что вам не нужно быть профессионалом во Flash, или полностью знать ActionScript, чтобы писать на нем качественный код. Вы можете использовать те возможности языка, которые сочтете необходимыми для своей работы.

Так как эта статья посвящена основам языка, в ней мы рассмотрим:

  • Панель действий (Actions panel), на которой происходит практически все общение с ActionScript.
  • Кнопки - как их заставлять работать, как нам требуется.
  • Пути - как обращаться к нужным объектам?
  • Основные действия с Flash-мультиками (movie clips) - мы будем управлять процессом проигрывания фильма, как нам будет угодно.
  • Отладку в ActionScript - окошки Output и Debugger.

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

Термины

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

  • Действия (Actions) - это инструкции, которые говорят Flash-мультику что делать. От них произошло название языка - ActionScript (дословно - сценарий действий). Давайте договоримся, что в рамках этой статьи, мы будем использовать термин "инструкция", дабы не путаться с настоящими действиями, которые будем производить.
  • События (Events) - это действия, которые происходят, когда проигрывается мультик. События, например, могут происходить, когда заканчивается загрузка какого-то кадра, когда мы достигаем какого-то кадра, когда пользователь нажимает клавишу на клавиатуре или курсор мышки оказывается над нашим объектом.
  • Выражения (Expressions) - это любая часть инструкции, которая порождает значение. Следующие примеры являются выражениями: 2 + 2, 2 * 2, a + b, 2*pi*r, (15 + k) * random(10) .
  • Функции (Functions) - это блок кода, который можно многократно использовать. Функции можно передавать значения и получать от нее возвращаемый результат. Например, number = get_color(15, 24) . 15 и 24 являются аргументами (или параметрами) функции get_color, возвращаемое значение которой записывается в переменную number.
  • Классы (Classes) - это типы объектов. Например, класс дерева - растение. Во Flash есть некоторое количество предопределенных классов (очень похожих на классы JavaScript). Вы можете создавать свои классы, или модифицировать существующие.
  • Экземпляры (Instances) - это буквально экземпляры определенных классов. Например, экземпляром растения могут являться дерево, куст или цветок. Экземпляр - это уже конкретный реальный объект. Если класс - это определение объекта (экземпляра), то экземпляр - это уже конкретное воплощение, это класс в действии. Каждому экземпляру можно присвоить имя, чтобы через него обращаться к функциям или переменным объекта.
  • Обработчики (Handlers) - это специальные инструкции, которые обрабатывают события. Например onClipEvent - обработчик действий, связанных с конкретным символом (см. ).
  • Операторы (Operators) - это элементы языка, которые вычисляют значения, исходя из одного или более аргументов. Например, оператор сложения (+) возвращает сумму двух значений, стоящих слева и справа от него.
  • Переменные (Variables) - это идентификаторы, которые могут хранить значения. Например, a = 5; или name = "Michael".

Эти термины мы будем использовать при обсуждении ActionScript. Итак…

Панель действий (Actions Panel)

Панель действий служит для отображения и ввода ActionScript программ (рис. 1). Существует два режима работы с панелью - нормальный (для "чайников") и экспертный. В экспертном режиме список команд - это простое поле для ввода текста. В нормальном же режиме, мы не можем напрямую редактировать команды. Для этого используется панель параметров.

Добавить инструкцию можно, нажав на кнопку "+" (см. рис. 1) или выбрав соответствующую инструкцию в списке элементов языка. Кроме того, для всех действий во Flash имеются последовательности клавиш, с помощью которых это можно сделать гораздо быстрее. Они приведены справа от каждого действия в меню кнопки "+". Например, чтобы добавить функцию stop() , нужно нажать Esc+st (последовательно: Esc, затем "s", затем "t").

Удалить инструкцию можно, выбрав ее, и нажав кнопку "-" (или просто клавишу Delete).

Я рекомендую вам не начинать сразу же пользоваться экспертным режимом, если у вас нету опыта программирования на Java-подобных языках (С++, Java, JavaScript). У нормального режима есть большое достоинство, делающее его незаменимым для новичков - в нем есть гораздо меньше шансов ошибиться с синтаксисом языка. Новичкам это поможет быстрее понять тонкости ActionScript.


Рис. 1 - Панель действий

В панели действий отображаются действия объекта, либо кадра, выбранного в данный момент.

Кнопки

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

Как вы знаете, во Flash существует специальный тип символа для создания кнопок - Button (см. ). Будем считать, что вы уже научились создавать кнопки, теперь научимся отслеживать нажатия на эти кнопки.

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

  • press - клавиша мышки нажата, когда курсор находится в пределах кнопки;
  • release - клавиша мышки отжата, когда курсор находится в пределах кнопки;
  • releaseOutside - клавиша мышки отжата, когда курсор находится вне пределов кнопки;
  • rollOver - курсор мыши входит в пределы кнопки;
  • rollOut - курсор выходит за пределы кнопки;
  • dragOver - курсор входит в пределы кнопки, при этом была нажата кнопка, и нажата клавиша мыши;
  • dragOut - курсор выходит за пределы кнопки, при этом была нажата кнопка, и нажата клавиша мыши;
  • keyPress ("клавиша") - была нажата "клавиша". Список клавиш можно посмотреть в справке по Flash (объект Key), или использовать панель параметров для вводу нужной клавиши.

К сожалению, Flash "понимает" только левую клавишу мыши. Правая используется для вызова контекстного меню (щелкните правой клавишей на каком-нибудь Flash мультике). Способов отлавливать во Flash среднюю клавишу или "колесико" (mouse wheel), я пока не встречал, думаю, что их не существует.

Перехватываются эти события с помощью директивы on() . Синтаксис ее таков:

On (событие) { ... // Наши действия }

Ниже вы можете сами попробовать вызвать некоторые события:

Очень часто используемый пример - переход по ссылке при нажатии на кнопку:

On (release) { getURL("http://rubs.boom.ru"); }

Чтобы проверить этот сценарий, выделите вашу кнопку, нажмите Ctrl+Alt+A и введите программу.

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

Основные действия с Movie Clips

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

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

Итак, что же у нас есть? Я перечислю только основные (на мой взгляд) инструменты. Остальное вы найдете в списке элементов языка или в помощи.

Функции клипов (movie clip), которые можно вызывать:

  • play() - начинает или возобновляет воспроизведение клипа;
  • stop() - останавливает воспроизведение клипа;
  • gotoAndPlay() - переходит на определенный кадр (сцену) и продолжает воспроизведение;
  • gotoAndStop() - переходит на определенный кадр (сцену) и останавливает воспроизведение.

Свойства (параметры) клипов, которые можно считывать/изменять:

  • _x, _y - координаты клипа (в пикселях);
  • _xscale, _yscale - масштаб клипа (в процентах), соответственно по горизонтали и по вертикали;
  • _width, _height - ширина и высота клипа (в пикселях);
  • _rotation - угол поворота клипа (в градусах);
  • _alpha - прозрачность клипа (в процентах);
  • _visible - видимость.

Это далеко не все, что можно делать с клипами. Используйте другие параметры, экспериментируйте, творите!

Имена

Для того, чтобы обращаться к клипам, нам потребуется разобраться с понятием имени объекта (instance name) и пути до объекта (target path). Договоримся, что клип (movie clip) и объект для нас - одинаковые вещи.

Имя объекта - это имя конкретного экземпляра символа. Скажем у нас может быть символ - машинка, а экземпляры этого символа будут называться "Машинка1", "Машинка2", "Pickup", "Запорожец"…

Для того чтобы дать имя объекту нужно выделить объект, и в панели Instance (Window->Panels->Instance, Ctrl+I) в графе Name ввести имя объекта (рис. 2). Имена могут состоять только из букв, цифр и символа подчеркивания ("_"), причем имя не может начинаться с цифры.


Рис. 2 - Панель Instance

Пути

Путь до объекта - это запись имени объекта с учетом иерархии. Попытаюсь объяснить, что это такое.

Вы знаете, что во Flash объекты можно "вкладывать" друг в друга, составляя, таким образом, иерархию. Так вот, эта вложенность обеспечивает не только удобство в обращении с объектами, она еще и ограничивает видимость имен объектов. Видимость ограничивается своим уровнем. Объект может напрямую (по имени) обращаться только к объектам, входящим в него, стоящим на 1 уровень ниже в иерархии.

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

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

this - указатель на "самого себя" (т.е на текущий объект). Бывает нужен, например, когда нужно передать в функцию указатель на объект, из которого эта функция вызывается.

_parent - указатель на "родителя". Указывает на объект стоящий уровнем выше в иерархии.

_root - "корень". Это начало иерархии. Без него не обойтись при указании абсолютного пути.

Путь выглядит так:

leaf.play(); - у подобъекта leaf (лист) вызывается функция play();

_parent.tree.leaf.stop(); - подразумевается, что на одном уровне имеется объект tree, у которого есть объект leaf , у которого и вызывается функция stop();

_root.banner._visible = false; - сделать клип banner , находящийся на 1-м уровне, невидимым.



Рис. 3 - Иерархия клипов

Для иллюстрации возьмем иерархию из 5-ти объектов (рис. 3). Объекты 1-4 находятся на 1-м слое, объект 5 - на 2-м слое. Объект 2 вложен в объект 1, а объект 3 вложен в объект 2. Объекты на рисунке визуально вложены друг в друга, но это ни в коем случае не означает, что так должно быть и "в жизни". Здесь они так сгруппированы для наглядности. Так как имя объекта не может начинаться с цифры, пусть объекты у нас называются obj1-obj5 .

Теперь займемся путями. Для начала посмотрим, какие объекты могут обращаться друг к другу по имени. obj1 может обращаться к obj2, а obj2 - к obj3 , но при этом obj1 не может обратиться к obj3 напрямую, т.к. тот содержится не в obj1 , а в obj2 .

Скажем первому объекту нужно, чтобы объект 3 начал заново воспроизводиться с 1-го кадра. Вот как это делается:

Obj2.obj3.gotoAndPlay(1);

Чтобы 4-му объекту сделать 1-й объект (заметьте со всеми подобъектами!) полупрозрачным, ему нужно в своем сценарии написать следующее:

Parent.obj1._alpha = 50;

Root.obj1._alpha = 50;

Т.к. obj4 у нас находится на первом уровне иерархии, то для него _root и _parent - одно и то же.

Теперь для объекта 3 напишем скрипт, который сделает объект 5 невидимым при нажатии клавиши мыши. В сценарии для объекта 3 пишем:

OnClipEvent (mouseDown) { _root.obj5._visible = false; }

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

Parent._parent._parent.obj5._visible = false;

Надеюсь, я прояснил момент с путями.

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