Программирование в Macromedia Flash. Основы программирования

Программирование

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

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


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

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

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

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

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

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

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

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

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

dobe Flash Томилова Елена Анатольевна

Лекция 8 . Программирование во Flash

План

Введение

Для придания интерактивности роликам, Flash имеет внутренний язык сценариев ActionScript .

ActionScript — это язык программирования, посредством которого во Flash осуществляется отправка команд и запросов о временных зависимостях, видеоклипах, кнопках и других объектах.

Язык ActionScript создан на основе стандарта ЕСМА-262, который, в свою очередь, составлен на базе языка JavaScript . По сути, ActionScript является разновидностью JavaScript , адаптированного и оптимизированного для работы в среде Flash .

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

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

Чтобы использовать действия ActionScript , вам не нужно быть программистом. Безусловно, при создании сложных сценариев опыт программирования окажется полезным. Однако при написании сценариев ActionScript предыдущий опыт не является обязательным. Для выбора действий и связывания их с объектами фильма создатели Flash предусмотрели простой и понятный интерфейс — панель Actions. С помощью данной панели вы получаете доступ к библиотеке команд ActionScript), что позволяет вам значительно экономить время при вводе кода сценариев.

Таким образом, ActionScript — это объектно-ориентированный язык программирования, являющийся родным для среды Flash . В данном контексте термин объектно-ориентированный означает, что сценарии связываются с объектами или элементами фильма. Если во время воспроизведения фильма эти объекты принимают сообщение об определенном событии, их сценарии (или действия) выполняются. Например:

on(press){

gotoAn d Play("nextStop")

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

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

С помощью языка ActionScript можно

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

В версии Adobe Flash 9.0 (CS3) основным языком программирования является ActionScript 3.0 , однако он достаточно сложен для изучения на начальном этапе и мы не будем его рассматривать.

Вместе с тем поддерживается и старый «простой» вариант — язык ActionScript 2.0 , который и будем использовать.

Запомните, что при создании новых FLA-файлов нужно всегда выбирать тип документа Flash File (ActionScript 2.0) .

Программа на ActionScript называется сценарием . Она состоит из отдельных блоков кода, которые могут связаны с некоторыми элементами фильма:

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

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

Знакомство с панелью Действия (Actions )

Панель Actions (Действия) — это интерфейс создания сценариев, которые будут выполняться во время воспроизведения Flash-фильма. Работать с панелью Действия (Actions ) можно в двух режимах: Normal (Обычный) и Expert (Эксперт). В режиме Normal пользователю доступны некоторые автоматические функции создания кода, поэтому данный режим рекомендуется для новичков. Работая в режиме Normal, вы можете создавать действия и добавлять их в фильм посредством выбора соответствующих пунктов меню и перетаскивания элементов с помощью мыши. Режим Expert больше подходит для опытных разработчиков. В данном режиме панель Действия (Actions) больше похожа на окно текстового редактора, в котором пользователь самостоятельно вводит код сценариев.

Чтобы открыть или развернуть панель Действия (Actions ) , выполните одно из следующих действий:

  • из меню Окно (Window) выберите пункт Действия (Actions);
  • нажмите клавишу < F9 >.

После этого на экране появится или будет развернута панель Действия (Actions). Если эта панель была открыта, но скрыта другим окном, она переместится на передний план.

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

Область отображения сценария служит для отображения всех строк-операторов текущего сценария.

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


Работа с действиями объектов

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

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

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

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

Использование действий

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

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

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

  • Создание сложных, интерактивных схем навигации.
  • Изменение качества воспроизведения фильма.
  • Связь с документами HTML, размещенными в Интернете, и обмен данными с приложениями сервера.
  • Обмен данными с хост-приложениями или другими Flash-фильмами.
  • Воспроизведение других фильмов в пределах главного фильма.

Возможности управления сценами с помощью сценариев ActionScript

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

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

  • gotoAndPlay() . Вызов действия gotoAndPlay() приводит к переходу головки воспроизведения к определенной сцене и кадру. Воспроизведение фильма продолжается с этого кадра.
  • gotoAndStop(). При вызове данного действия происходит переход к определенной сцене и кадру и остановка воспроизведения фильма.
  • play() . Это действие позволяет продолжить воспроизведение фильма после остановки.
  • stop() . С помощью данного действия можно остановить воспроизведение фильма.

События мыши

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

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

  1. Выберите кнопку, с которой необходимо связать действие либо для которой необходимо изменить обработчик событий.
  2. Откройте панель Actions и выполните одно из следующих действий.
    1. Если вы хотите установить обработчик события мыши, выберите действие on () из категории Actions – Movie Control .
    2. Если вы хотите изменить обработчик события мыши для уже существующего действия, выберите строку-оператор, содержащую название события, и на области отображения параметров установите соответствующий флажок.
  3. В области параметров отображается список различных обработчиков события мыши. Установите флажок рядом с названием соответствующего обработчика, и ваш сценарий автоматически будет обновлен. На рисунке показан внешний вид панели Actions, когда в области отображения сценария выбрана строка-оператор, содержащая обработчик события.

Имена и описания событий мыши в языке ActionScript :

  • Press . Событие press инициирует действие при нажатии кнопки, когда указатель мыши находится над объектом кнопки.
  • Release . Событие release инициирует действие при отпускании кнопки, когда указатель мыши находится над объектом кнопки. Это событие принимается по умолчанию.
  • Release Outside . Событие release Outside инициирует действие при отпускании кнопки, когда указатель мыши не находится над объектом кнопки.
  • Key Press . Событие key Press не связано с мышью. Оно инициирует действие, когда на клавиатуре будет нажата клавиша, указанная в поле слева от данного флажка.
  • Roll Over . Событие roll Over инициирует действие, когда указатель мыши помещается на объект кнопки.
  • Roll Out . Событие roll Out инициирует действие, когда указатель мыши помещается за пределы объекта кнопки.
  • Drag Over . Событие drag Over может показаться сначала несколько сложным. Фактически оно включает комбинацию из серии различных событий. Чтобы инициировать действие с помощью события drag Over , необходимо установить указатель мыши над объектом кнопки и выполнить щелчок, переместить указатель за пределы объекта, а затем снова поместить указатель на объект.
  • Drag Out . Чтобы инициировать действие с помощью события drag Out , выполните щелчок, когда указатель мыши находится над объектом кнопки, а затем переместите указатель за пределы объекта.

Практическая работа № 21. Работа с действиями кадра

  1. Создайте новый файл – Документ Flash .
  2. На Сцене 1 создайте анимацию.
  3. Добавьте Сцену 2 и создайте анимацию для данной сцены.
  4. Перейдите на Сцену 1, добавьте слой и пропишите действие переход на сцену 2 .

  1. На Сцене 2 или последней сцене вашего проекта поставьте кнопку, по клику которой откроется Сцена 1.

  1. Сохраните файл под именем Фамилия_21.fla.
  2. Опубликуйте в формате.swf
  3. И пришлите в одном архиве.


Практическая работа № 22. Нескольких действий в одном сценарии

  1. Создайте новый файл – Документ Flash .
  2. На Слои 1 в первом кадре пропишем команду stop() , для того чтобы анимация не начиналось, т.е. не происходило никаких действий.

  1. Создайте Слой 2. Начиная со 2 кадра и до 31, создайте анимацию, которая будет воспроизводиться при нажатии кнопки мыши.

  1. В 31 кадре пропишите остановку анимации, чтобы никаких действий не происходило.
  2. Добавьте Слой 3. Начиная со 32 кадра и до 62, создайте анимацию когда кнопка будет отпущена.

  1. Добавьте Слой 4. И разместите на нем кнопку. И пропишите действия:

on (press) {

GotoAndPlay (2); // при нажатии кнопку будет происходить действия начиная со 2 кадра

on (release) {

gotoAndPlay(32); // будет происходить действия начиная со 32 кадра, когда кнопка будет отпущена

  1. Протестируйте программу.
  2. Сохраните файл под именем Фамилия_22.fla.
  3. Опубликуйте в формате.swf
  4. И пришлите в одном архиве.

Использование действий для создания основных элементов управления воспроизведением фильма

Мы уже рассмотрели процесс связывания действий с различными элементами фильма. В данном разделе мы дадим обзор самых важных и полезных действий языка ActionScript. Эти базовые действия перечислены в том порядке, в котором они расположены в своих подкатегориях (Adobe Flash CS 3 Professional ).

Подкатегория Movie Clip Control

  • setProperty () . Установка атрибутов клипа: размеры, положение и т. д.
  • onClipEvent() . Определяет обработчик события клипа, который будет инициировать действие.
  • on () . Определяет обработчик события мыши, который будет инициировать какое-то действие.

Подкатегория Timeline Control

  • gotoAndPlay() . Переход к указанному в качестве параметра кадру или сцене и воспроизведение фильма с этого места.
  • gotoAndStop() . Переход к указанному в качестве параметра кадру или сцене и остановка фильма.
  • play () . Воспроизведение фильма.
  • stop () . Остановка фильма.
  • stopAllSounds() . Отключение звукового сопровождения фильма.

Подкатегория Browser/Network

  • fscommand() . Управление приложением Flash Player.
  • getURL() . Вызов фильма с указанным URL.
  • unloadMovie () . Выгрузка других Flash-фильмов.

Связь с URL

С помощью действия getURL() можно установить связь с URL непосредственно из Flash-фильма. Связь с URL позволяет выполнять две вещи. Во-первых, вы можете использовать Flash для создания Web-ссылки и загрузки информации в окно браузера из источника, соответствующего указанному URL. Во-вторых, действие можно использовать для передачи данных ресурсу, который находится по определенному URL.

Чтобы связать действие getURL() , необходимо выполнить следующее.

  1. Выберите кнопку, кадр или экземпляр клипа, с которым вы хотите связать действие.
  2. Откройте панель Actions .
  3. В области элементов ActionScript откройте подкатегорию Browser/Network и выполните двойной щелчок на значке действия getURL (). Действие getURL() имеет три параметра, которые должны быть определены: URL, Window (Окно) и Variables (Переменные). Существует также возможность использовать выражение, в котором описывается местоположение URL. Для этого необходимо установить флажок Expression (Выражение) справа от поля URL.
  4. В поле URL необходимо ввести абсолютный или относительный путь к ресурсу. Абсолютный путь включает полный адрес URL, например http://www. it - n . ru . Относительный путь содержит информацию о нахождении файла в пределах файловой структуры, где сохранен Flash-фильм, например такую: currentfolder / folderl / folder ().
  5. Раскрывающийся список Window позволяет определить, в каком окне браузер будет загружать документ, на который указывает URL. Вы можете ввести определенное имя фрейма или окна, ввести выражение, которое описывает местоположение окна, либо выбрать один из следующих элементов раскрывающегося списка.
  • _self . Документ загружается в текущем окне, где в настоящий момент воспроизводится фильм.
  • _blank . Документ загружается в новом окне.
  • _parent . Данный элемент указывает на текущее окно и позволяет заменить только фрейм, где в настоящий момент воспроизводится фильм.
  • _top . Данный элемент целесообразно использовать тогда, когда ваш фильм воспроизводится во фрейме, а новый документ, на который указывает URL, должен заполнить все окно браузера.
  1. Раскрывающийся список Variables (Переменные) используется для передачи переменных на URL, с которым вы устанавливаете связь.
  • Don"t Send (не передавать). Данный элемент установлен по умолчанию и используется в тех случаях, когда нет необходимости в обмене данными.
  • Send Using GET (передавать с использованием метода GET). Данный элемент списка выбирают в тех случаях, когда необходимо передать несколько переменных и объем передаваемых данных небольшой.
  • Send Using Post (передавать с использованием метода POST). Данный элемент списка выбирают в тех случаях, когда необходимо передавать большой объем информации.

Практическая работа № 23. Ставим ссылки на картинки

  1. Создайте новый файл – Документ Flash .
  2. Импортируйте все необходимые изображения для будущих кнопок (Ctrl + R ).
  3. Выделите первую картинку и нажмите F8 . Конвертируйте ее в кнопку.

  1. Дважды кликните на мувиклипе.
  2. Теперь кликните на кадре с заголовком Over и добавьте кадр, нажав F6.

  1. Создайте новый слой и кликните на кадре с заголовком Over и добавьте кадр (F6). После при помощи Rectangle Tool (R) обведите картинку.

  1. Вернитесь обратно на главную сцену и при помощи инструмента выделения (V) кликните на кнопке, нажмите F9 и введите следующий AS-код:

  1. Повторите все предыдущие шаги для других картинок.
  2. Протестируйте программу.
  3. Сохраните файл под именем Фамилия_23.fla.
  4. Опубликуйте в формате.swf
  5. И пришлите в одном архиве.

Задание

Создайте презентацию на свободную тема, используя материал урока.

Литература

  1. Гурвиц, Майкл, Мак-Кейб, Лора. Использование Macromedia Flash MX. Специальное издание.: Пер. с англ. — М.: Издательский дом "Вильяме", 2003. — 704 с.: ил. — Парал. тит. англ.
  2. Уотролл Э., Гербер Н. Эффективная работа: Flash MX . СПб.: Питер; Киев: DHV , 2003. – 720 с.: ил.
  3. http://www.interface.ru/

PAGE 1

Область элементов ActionScript

Раскрывающийся список сценариев

Область отображения сценария

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

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

Нико, у вас есть главное – желание. Если оно не испариться через пару неделек-месяцев, то результат будет. С чего начать – с матчасти.

1.Купите/скачайте с сети учебник-самоучитель по флеш. Берите одну из последних версий (Flash Cs4-Cs 6), забудьте про учебники по Макромедии, FlashMX , это уже прошлый век в прямом смысле. Хотя многое с тех времен не изменилось во флеше.

Если планируете изучение Action script (а для флешера знать хотя бы основы as, я считаю, просто необходимо) – остановитесь на c As3. As2 потихоньку уходит в прошлое, будем шагать в ногу со временем.

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

Вы, наверное, сильно удивитесь, но все книжки по изучению флеш содержат одну и ту же информацию:) Особенно это касается книжек для новичков.

Очень мне нравились книжки How to Cheat in Adobe Flash на английском от флеш-аниматора Chris Georgenes (он пишет уроки по флеш-анимации для Адоба).

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

Скачать How to Cheat in Adobe Flash in Cs5 вместе с диском можно .

Мое изучение флеша началось именно с самоучителя. В изучении флеш мне лично помог не сам учебник, а видеокурс, который прилагался к учебнику. Поэтому переходим к пункту № 2.

2. Видео-уроки.

Считаю, что видео-уроки самые эффективные, поскольку сама изучала флеш по видео-курсу.

3. Еще что в изучении флеш-анимации никак не обойтись без такой программки, как Swf Decompiller . Это ломалка свф-файлов, то есть готовых анимаций. Вот о ней речь. Она позволяет просматривать (не тырить:) работы профи, очень помогает в изучении флеша. Вы берете уже готовую работу и просматриваете на таймлайне, как что сделано, пытаетесь повторить. Не всегда корректно отображается анимация – маски, твины, но принцип можно понять и взять на заметку.

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

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

Самый большой форум по флеш, который мне известен – flasher.ru . Так что, уважаемые новички – пользуйтесь благами интернета и этого ресурса в частности:)

6.И еще важный момент. Для того, чтобы сделать хорошую анимацию – неплохо бы обратиться к учебникам по классической анимации (особенно, если хотите научиться анимировать персонажей, а не только текстовые блоки для баннеров).

Освоив flash как инструмент, вы станете не совсем аниматором, а скорее «шевелителем», умеющим двигать объекты.

Книжек по классической анимации полно – остановитесь для начала на «Тайминг в анимации» , взять можно .

По поводу того, где достать Adobe Flash. Если вы хотите что-то найти или взять – то лучше google ничего нет. Он все знает:)

Можно ли самостоятельно научиться работать во флеше? Это вполне реально, почти все хорошие флеш-аниматоры, которых я знаю, сами изучили флеш, без курсов и экзаменов. Терпение, трудолюбие – и все в ваших руках. Даже так скажу- я не знаю флешеров, которые посещали курсы, все учили самостоятельно.

«Спасибо за блог, очень много полезного нашла для себя.

Я чистый векторщик, и в флеше мне не составило труда рисовать. Проблема началась, когда дошло до анимации.

Не могли бы вы сделать урок для самых самых безмозглых криворуких нубов))Что бы даже я поняла))»

( tara )

Будет урок по анимации для начинающих. Я не представляю, как уместить все в один урок, думаю, это будет серия уроков. Я была уверена, что уроков для начинающих в инете полно, но почему-то часто спрашивают именно их. Так что следите за обновлениями на сайте и в

Поскольку 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.

Прошлая статья была посвящена анимации. Мы создавали анимацию на основе 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;

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

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