Для кнопки «очистить» код аналогичен коду из предыдущей задачи.
Не смотря на то, что теоретически для любого A найдется значение n но в действительности даже для A=10, n=12367. Для больших значений A вычисление данной задачи может затянуться на минуты и часы…
Вопросы для повторения:
В чем отличие цикла "с параметром" и "пока"?
Какой цикл является более универсальным?
Что такое "счетчик" в цикле "с параметром" и что означает команда i++?
Как написать программу, выполняющую возведене в степень с помощью цикла "пока"?
Почему при выполнении цикла "пока" возможно зависание программы? Как этого избежать?
6. Проект «Flash-калькулятор»
Для того, чтобы посмотреть язык Action Script в действии давайте сделаем что-то действительно стоящее. Давайте сделаем калькулятор, внешний вид представлен на Рисунок 13.
Рисунок 13
Цель проекта: Создать стандартный калькулятор для Internet с возможностью производить стандартные арифметические действия. Для ввода значений использовать как мышь, так и стандартные клавиши клавиатуры.
Во-первых, создайте динамическое поле вывода и дайте ему имя, например, text. Во-вторых, создайте необходимое кол-во кнопок для нашего калькулятора. В-третьих, давайте начнем думать.
Нас ожидают три проблемы:
Первая проблема состоит в том, что, набирая первое число, каждая цифра добавляется в конец уже набранного числа, а после нажатия кнопки с изображением арифметического действия следующая цифра ставится в начало строки.
Когда мы будем вводить первое число, например 245, мы последовательно нажимаем кнопки 2, 4 и 5. Но как калькулятор узнает, что когда мы нажали на кнопку 2 – это двести, а не двадцать или две тысячи? Иными словами, как узнать какое число запоминать в первой переменной?
Третья проблема в том, что нужно использовать как минимум три переменных для первого, второго числа и также результата, а динамическое поле и имя его переменной только одно!
220" height="52" bgcolor="white" style="vertical-align:top;background: white">
https://pandia.ru/text/78/159/images/image013_35.gif" width="12" height="36">
Для решения первой проблемы нам потребуется дополнительная переменная, назовем ее stek. Ее назначение в том, чтобы отслеживать текущее действие. Когда вводится первое число ее значение, должно быть, допустим, единица. В момент, когда начнет вводиться вторая цифра первого числа значение переменной должно уже быть, скажем, двойка. В момент, когда начнет вводиться второе число значение переменной должно уже быть равно трем. В момент вычисления результата, переменная stek вновь должна принять значение равное единицы, чтобы полученный результат смог стать первым числом для последующих действий.
Все это означает, что нам не обойтись одним ключевым кадром. Желательно на новом слое создайте ключевой кадр и в нем задайте значение переменной stek равное единице. Во втором ключевом кадре добавьте всего одну команду Базовые действия – Остановить. Содержимое слоя калькулятор, в котором находятся все кнопки передвиньте во второй кадр (Рисунок 14). Теперь при запуске программы переменная stek принимает нужное значение, ролик переходит во второй кадр и останавливается. Все дальнейшие действия будут проходить именно там.
Рисунок 14
Для решения второй проблемы вводимое значение должно быть текстовым! При нажатии на цифру, например 1, будет происходить добавление к текстовой строке, состоящей из цифр еще одного символа
Ну а условный оператор и переменная stek помогут довести дело до конца. Ниже
представлен код, присвоенный клавише 1. Для всех остальных кнопок код аналогичен.
on (release, keyPress "1") {
‘ помимо обычного on (release) добавлена возможность использовать клавиатуру. keyPress "1" означает, что следующий код будет исполняться не только при нажатие на экранную кнопку, но и при нажатие на клавишу на клавиатуре. Как этого добиться смотри Рисунок 15.
‘ Если переменная stek равна единице, то переменная text, связанная с динамическим полем вывода примет значение равное единице, а переменная stek станет равна двум.
} else if (stek==2) {
‘ Если переменная stek равна двум, то единица не первая цифра в числе, поэтому она присоединяется к переменной text справа
} else if (stek==3) {
‘ Если переменная stek равна трем, то единица первая цифра во втором числе
Рисунок 15
Третья проблема решается достаточно легко. Нам нужно хранить введенные числа в промежуточных переменных. Давайте проанализируем программный код, соответствующий клавишам арифметических действий, в них реализовано решение данной проблеммы:
on (release, keyPress "+") {
и программному коду, соответствующему клавише равно.
on (release, keyPress "=") {
text = parseFloat(a)+parseFloat(text);
} else if (o=="m") {
text = parseFloat(a)-parseFloat(text);
} else if (o=="u") {
text = parseFloat(a)*parseFloat(text);
} else if (o=="d") {
text = parseFloat(a)/parseFloat(text);
В первом фрагменте должно быть все ясно. Если нажата клавиша «плюс» еще одна переменная o принимает значение p (plus), а значение переменной text запоминается во временной переменной a. И когда, наконец, нажимается клавиша равно, компьютер должен сложить значение хранящееся в переменной text и переменную a. Так как в переменных хранятся текстовые значения необходимо использовать функцию parseFloat(), которая преобразует текстовое выражение в число. Для ее вызова используется команда Функции – parseFloat.
Запускайте проект, тестируйте его. Нельзя сказать, полученный калькулятор идеален. В нем нет стандартных математических функций, для выполнения нескольких действий подряд всегда нужно нажимать равно. Но все усовершенствования вы можете сделать самостоятельно. Мы научились главному. Создавать несложные программные продукты с помощью Macromedia Flash.
Вопросы для повторения:
С какими проблемами мы столкнулись создавая калькулятор? В чем назначение переменной stek? Почему нажимая на цифровую клавишу в переменной должно храниться текстовое выражение? Для чего служит функция parseFloat()? Предложите идею как выполняя несколько арифметических действий "подряд" не нажимать в промежутках клавишу "равно"?
7. Объектно-ориентированное программирование.
Если вы знакомы с программированием на языках, таких как Pascal или Basic, то вы наверно заметили, что программирование на Flash на них совсем не похож. Все дело в том, что Action Script ближе не к процедурным языкам программирования, а к объектно-ориентированным, таким как Visual Basic или Delphi.
Не собираясь подробно останавливаться на сравнении этих языков, тем боле, что Action Script – это не самостоятельный язык, основные понятия нам необходимо знать. Прошу сразу простить меня за несколько вольное изложение такого фундаментального понятия как объектно-ориентированное программирование (ООП), в основе которого лежат такие непростые понятия как инкапсуляция и полиморфизм.
В основе ООП лежит объектная модель приложения, где все объекты являются элементами определенного класса (Рисунок 16). Так в основе приложения Flash лежит ролик, он состоит из одной или нескольких сцен. На сцене находятся графические объекты и объекты библиотеки. Также сцена имеет временную шкалу, на которой находятся кадры. Ключевые кадры, символы типа клип и типа кнопка могут иметь собственный код на языке Action Script.
В настоящих объектно-ориентированных языках к каждому элементу объектной модели можно обращаться программно. В Macromedia Flash вы можете обращаться программно с помощью Action Script только к некоторым из таких элементов.
Вообще говоря во Flash есть возможность создавать объектные переменные, но это выходит за рамки нашего элективного курса.
https://pandia.ru/text/78/159/images/image020_25.gif" width="612" height="420 src=">
Рисунок 16
Объектную модель вашего конкретного ролика вы всегда сможете посмотреть с помощью плавающей панели «Проводник по видеофрагментам».
рисунок 17 (представлен фрагмент объектной модели для предыдущего проекта
Flash-калькулятор)
Изменяемые объекты имеют свойства, то есть то, что можно изменять. Например, клип видеофрагмента имеет свойство координату X, в Action Script существуют методы, с помощью которых это свойство мы можем изменять. (и тем самым создавать программную анимацию). Подробней об этом в следующей главе.
Каждый вызов программного кода сопровождает некоторое событие, таким событием может быть нажатие экранной кнопки или нажатие клавиши клавиатуры.
Вопросы для повторения:
Назовите объектно-ориентированные языки программирования. Из каких элементов состоит объектная модель Flash? Какие элементы вы можете изменять программно? Поясните смысл терминов объект, свойство, метод, событие. На какие события реагирует Flash-ролик?
8. Программное изменение свойств.
Символы библиотеки типа клип видеофрагмента могут иметь изменяемые свойства. Это означает, что вы можете программно изменить размер, положение или видимость данного объекта. Как это реализовано?
Рисунок 17
Нарисуйте объект, например прямоугольник.
Поместите его в библиотеку, причем обязательно он должен быть клипом видеофрагмента;
На плавающей панели «Копия» обязательно нужно задать имя данного объекта, например, zzz (Рисунок 17).
В панели «Действия кадра» выбирайте команду Операции – Set Property (установить свойства). Данная команда имеет три настраиваемых поля. Свойство – то свойство объекта, которое мы хотим изменить, например, _x (x Позиция), положение объекта по оси Х. Цель – имя копии объекта, в данном случае – zzz. Значение – чему равно выбранное свойство, в этом поле может находиться конкретное число либо выражение, но в любом случае не забудьте поставить флаг у выключателя «Выражение» (Рисунок 18).
Вот и все, если вы запустите проект, то вы увидите, что ваш прямоугольник переместился и теперь координата его центра будет равна ста.
Рисунок 18
Полный набор изменяемых свойств находится в окне «Свойства кадра» раздел Свойства, а их значение можно найти в литературе. Давайте рассмотрим основные свойства, многие из них нам потребуются в дальнейшем в проекте:
Alpha – прозрачность объекта, изменяется от нуля – полная прозрачность, до 100 полная видимость;
Visible – очень похожее свойство, означает видимость. Свойство имеет только два значения – ноль (объект невидим) и единица (полная видимость объекта);
Рисунок 19
Height – высота объекта, измеряется в пикселях;
Width – ширина объекта, измеряется в пикселях;
Rotation – поворот объекта, относительно его центра, измеряется в градусах;
X – координата по x;
Рисунок 20
Y – координата по y, координата верхнего левого угла принимает значение равное (0,0);
Xscale – изменение масштаба по оси x;
Yscale – изменение масштаба по оси y;.
Как вы заметили, все свойства начинаются со знака подчеркивания.
Так как нам нужно не только программно изменять свойства объекта, но и отслеживать их текущее значение нам потребуется функция GetProperty (получить свойства). Команда вызывается в окне «Действия кадра» Функции – GetProperty() (Рисунок 19). Функция имеет два параметра. Target – цель, вместо слова target записывается имя копии символа объекта. Property – изменяемое свойство, вместо слова property, например, можно написать _x, получение текущей координаты по x. Данная функция используется, как правило совместно с командой установить переменную или внутри другой команды (Рисунок 20).
x = getProperty (zzz, _x);
Данная команда означает, что в переменной x будет сохранена текущая координата объекта, по имени zzz.
Рассмотрим, как можно использовать изменение свойств в проекте. Создайте объект, свойства которого можно изменять. Пример экрана представлен на Рисунок 21.
Рисунок 21
Создайте объект и превратите его в символ типа клип видеофрагмента.
Дайте имя копии этого символа на плавающей панели «Копия», например, «Ob».
Создайте набор кнопок. В принципе, набор кнопок может быть произвольным, в проекте используются кнопки изменяющие координаты объекта, а также изменяющие масштаб и прозрачность объекта.
Добавьте к кнопке, которая перемещает объект вверх следующий код:
on (release, keyPress "") {
setProperty ("Ob", _y,
getProperty (Ob, _y) - 5);
данная команда изменяет свойство объекта «Ob», его координату y. Для того чтобы объект переместился вверх вычисляется его текущая координата и от нее отнимается 5.
Другие кнопки имеют аналогичный код, отличающийся только тем свойством, которе вы собираетесь изменять. Для примера приведем еще один:
setProperty ("Ob", _xscale, getProperty (Ob, _xscale) + 5);
setProperty ("Ob", _yscale, getProperty (Ob, _yscale) + 5);
Данный код увеличивает масштаб объекта. Для пропорционального увеличения необходимо увеличить размер как по оси x, так и по оси y. Поэтому в данном скрипте две команды.
Вопросы для повторения:
К каким символам библиотеки можно обращаться программно? Как это организовать? Какие свойства объектов вы изучили? Какой у них смысл? В чем разница команд setProperty и getProperty? Объясните смысл строки: setProperty ("Ob", _xscale, getProperty (Ob, _xscale) + 5); Предположите, как можно изменять свойства других объектов, например, кнопок?
9. Трехкадровые циклы. Программная анимация.
Программное изменение свойств объектов позволяет создавать программную анимацию. В отличие от стандартной анимации, которую можно создать в программе Macromedia Flash, программной анимацией можно управлять по ходу ролика.
Казалось бы, достаточно циклично изменять свойства объекта, например координату x и объект начнет движение, но это не так. Дело в том, что во Flash вначале выполняется программный код, а лишь потом происходит изменение, перерисовка экрана. Поэтому объект из начальной точки сразу перенесется в конечную, плавного движения не получится. Преодоление этого противоречия лежит в использовании трехкадровых циклов.
Их идея в следующем:
В первом ключевом кадре задаются начальные константы, начальное положение объекта.
Во втором ключевом кадре происходит изменение свойства объекта на какую-то заданную величину.
В третьем ключевом кадре находится всего одна команда перейти на второй кадр.
Не смотря на то, что явно цикл не задан, будет происходить циклическое изменение свойств. Выполнив программное изменение свойств во втором кадре, компьютер изменит положение объекта, а третий кадр «зациклит этот процесс.
Рассмотрим, как трехкадровый цикл реализуется на практике. Создадим ролик, в котором автомобиль движется от края до края листа, поворачиваясь в противоположную сторону и продолжая движение до бесконечности. У пользователя есть возможность изменять его скорость движения, замедляя или увеличивая его. Внешний вид ролика, разумеется без движения представлен на Рисунок 22. Ниже будет представлен разбор программного кода для реализации данного проекта.
Рисунок 22
Создайте на первом слое рисунок машины, или импортируйте уже готовый рисунок. Слой переименуйте в «машина», а ключевой кадр продлите до третьего кадра, нажав в третьем кадре клавишу F5.
Конвертируйте рисунок в символ, типа клип видеофрагмента. Дайте имя копии этого символа на плавающей панели «Копия», например, «car».
Создайте новый слой, переименуйте его в «кнопки» и создайте на нем две кнопки «быстрее» и «медленнее».
На новом слое «Действия» создайте три пустых ключевого кадра, три раза нажмите клавишу F7.
В первом ключевом кадре добавьте следующий код:
setProperty ("car", _x, 50);
Обратите внимание, данный код не взят в фигурные скобки и в начале не присутствует on (release), то есть данный код относится именно к кадру, а не кнопке. В данном фрагменте в первой строке у объекта под именем car устанавливается свойство _x (координата по оси x) значение 50. Далее вводится три переменных, вот их смысл: dx – величина единичного перемещение объекта, а также направление движение (смотри дальше), MinX и MaxX соответственно минимально и максимально возможная координата объекта. Вообще можно обойтись без этих переменных, но используя их значительно проще отлаживать ваш проект. Я думаю, более глубокое понимание возникнет при анализе дальнейшего кода.
Во втором ключевом кадре добавьте следующий код:
x = getProperty (car, _x);
‘ В переменной x сохраняется текущее положение объекта.
if (x<=MaxX) {
setProperty ("car", _xscale, -100);
‘ Конструкция из двух вложенных условных операторов. Первый проверяет dx>0. Если это так, то автомобиль движется вправо. Второе условие x<=MaxX проверяет не достиг ли автомобиль максимально возможной координаты. Если это так то изменяется координата x объекта «car». Если второе условие не выполняется, то максимальная координата достигнута, как результат масштаб по координате х изменяется на -100% (автомобиль переворачивается) и единичного перемещение объект изменяется на противоположное.
if (x>=MinX) {
setProperty ("car", _x, x+dx);
setProperty ("car", _xscale, 100);
‘ Вновь конструкция из двух вложенных условных операторов. их назначение аналогично предыдущим.
В третьем ключевом кадре добавьте следующий код:
gotoAndPlay (2);
Если вы сейчас запустите проект, то увидите что объект совершает движение вправо-влево. Добавим несложный код, увеличивающий и уменьшающий скорость.
Для изменения скорости нужно увеличить величину единичного перемещения объекта. Код, соответствующие кнопке «быстрее» приведен ниже:
on (release, keyPress "") {
‘ Если единичное перемещение положительно, то нажатие на кнопку увеличивает это перемещение на единицу. Обратите внимание, что тоже действие произойдет если вы нажмете на кнопку на клавиатуре «вправо».
Код, соответствующие кнопке «медленнее» приведен ниже:
on (release, keyPress "") {
Назначение аналогично предыдущему фрагменту. Вот и все. Запускайте проект, тестируйте его. Полученные знания мы применим в последнем проекте, который объединит в себе два предыдущих и получится игра.
Вопросы для повторения:
Почему программную анимацию невозможно реализовать с помощью обычного цикла «пока»? Поясните назначение каждого кадра в трехкадровом цикле. Поясните смысл переменной dx в описанном проекте. Для чего в программном коде присутствует строка setProperty ("car", _xscale, 100);? Добавьте к созданному пректу кнопку "остановить".
10. Проект «Интерактивная игра - Тир».
Цель проекта: Создать интерактивную игру тир. На игровом поле перемешается заяц (цель) в которого необходимо попасть с помощью перемещаемой мишени. Попадание необходимо произвести за минимальное кол-во шагов (высчитывается). Примерный вид экрана представлен на Рисунок 23.
Для реализации этого проекта вам необходимо создать объект цель (в данном случае, это импортированный рисунок зайца). Он должен совершать движения так же как автомобиль из предыдущего проекта. Также необходимо создать объект мишень и набор кнопок, которые перемещают данный объект вправо-влево и вверх-вниз. Также необходимо создать шесть динамических полей вывода. Два для вывода координат мишени, два для вывода координат цели, одно для вывода результата и одно для подсчета кол-ва попыток.
В принципе это – все тот же трехкадровый цикл. В первом кадре задаем начальные параметры:
z_x = random (450)+50;
z_y = random (230) + 50;
pr_x = getProperty (pr, _x);
pr_y = getProperty (pr, _y);
setProperty ("z", _x, z_x);
setProperty ("z", _y, z_y);
setProperty ("buh", _visible, 0);
d – точность попадания (подробней о этой переменной далее); h – единичный шаг перемещения «зайца»; rez – количество повторений, изначально данная переменная равна нулю; z-x и z-y – начальные координаты «зайца», они задаются с помощью стандартной функции Random, она вызывается с помощью команды Объектов – Математика - Произвольный в окне Действия кадра; далее свойства цели (объект «z») устанавливаются в полученные случайные координаты; и наконец в последней строке устанавливается видимость «выстрела» равной нулю, то есть до поры до времени объект «buh» невидим.
Рисунок 23
А ниже представлен код, соответствующий второму ключевому кадру:
z_x = getProperty(z, _x);
if (z_x>=max_x) {
setProperty ("z", _xscale, -50);
if (z_x<=min_x) {
setProperty ("z", _xscale, 50);
setProperty ("z", _x, z_x+h);
все в точности повторяет аналогичный код второго кадра из прошлой задачи.
В третьем кадре находится всего одна команда:
gotoAndPlay (2);
она позволяет «зациклить» движение цели.
Добавьте код для кнопок, перемещающих мишень вправо-влево, вверх-вниз. В качестве примера приведем код, для перемещения мишени вправо:
on (release, keyPress "") {
pr_x = getProperty (pr, _x);
setProperty ("pr", _x, pr_x + 10);
pr_x = getProperty (pr, _x);
в этом фрагменте команда pr_x = getProperty (pr, _x) повторяется дважды, это – не ошибка. Просто первый раз эта команда нужна для того, чтобы определить положение мишени до перемещения, а второй раз нам нужна новая координата мишени, чтобы при выстреле сравнивать ее с координатой цели.
Осталось добавить код для кнопки «огонь». Он представлен ниже:
on (release, keyPress "") {
‘ Вне зависимости от результативности выстрела переменная rez увеличивается на единицу.
setProperty ("buh", _x, pr_x);
setProperty ("buh", _y, pr_y);
setProperty ("buh", _visible, 1);
‘ Символ имитирующий «выстрел» перемещается в координаты где в данный момент находится мишень и его видимость становится равной единице.
tellTarget ("buh") {
gotoAndPlay (2);
‘ В проекте «выстрел» - это клип в котором проявляется красный круг. Для того, чтобы этого не происходило постоянно в первом и последнем кадре клипа стоит команда stop(). Команда TellTarget показывает компьютеру, что следующие в фигурных стрелках команды относятся только к объекту «buh» и выполняются в нем. Переходя во второй кадр тем самым запускается анимация внутри клипа «buh».
if (Math. abs (pr_x - z_x)
text = "Точно в цель!";
‘ В каком случае считать что мы попали в цель – в том случае, если разница между координатами цели и мишени меньше точности попадания (переменная d в первом кадре). Все дело втом, что одновременно выполняться оба условия идля координат x и для координат y, поэтому используется логическая связка И (смотри урок 4). И последнее, мы должны сравнивать модуль разности координат для этой цели используется стандартная математическая функция Math. abs (). Если все условия выполняются, динамическое поле «text» принимает значение "Точно в цель!" и ролик останавливается.
text = "мимо!";
Вот и все. Проект работает, цель бегает от нас, а текстовые поля отслеживают его положение. Мишень перемещается по полю, и результаты выводятся на экран. Можно поздравить себя мы прошли весь путь.
Вопросы для повторения:
Какие изученные технологии использованы в этом проекте? Какое назначение у команды tellTarget ("buh")? Что нужно изменить в программе, чтобы уменьшить поле движения зайца на 100 пикселей? Почему сравнивая координату цели и координату мишени, мы должны вычислять модуль данных координат? Как это реализуется во Flash? Предложите варианты усложняющие игру, предложите пути их реализации.
Мы только прикоснулись к программированию во Flash. Остались не затронутыми такие вопросы, как работа с массивами, мы не работали со звуком и с прокручиваемыми текстовыми полями, мы не работали с объектными переменными. В Flash еще много тайн и сюрпризов, их изучение – это отдельный разговор. Возможно у автора найдется время, чтобы описать и эти интересные аспекты.
Если вас заинтересовали эти первые уроки, заинтересовало программирование во Flash, то эти несколько ночей, что я описывал первые шаги в замечательной программе Macromedia Flash не пропали даром. Вы можете связаться со мной по E-mail, высказать свои пожелания и замечания, задать вопросы, но в любом случае спасибо, что вы дочитали этот текст.
Для получения. exe файла вы должны в программе Macromedia Flash создать Flash-ролик, опубликовать его (меню файл – публикация
). В результате у вас появляется файл с расширением. swf, просмотреть его можно либо с помощью программы Flash Player (устанавливается автоматически при установке Macromedia Flash. Откроете появившийся файл, выбирете меню файл – создание проектора,
задаете имя вашего. exe файла.
Не смотря на то, вы видите прямоугольник, как на рисунке, это – граница, при наборе она будет оставаться, но в самом ролике ее не будет видно.
Скорее всего, при попытке набрать текст русскими буквами у вас на экране появится «абракадабра». Это связано с тем, что по умолчанию в программе Flash стоит шрифт Times New Roman, в котором отсутствует описание кириллических символов. Поэтому перед набором установите шрифт, поддерживающий кириллицу, например, Times New Roman Cyr или Arial Cyr.
Если вы читаете электронный вид данного пособия, то вы можете скопировать данный фрагмент, а после вставить его через буфер обмена в окно действия кадра.
В четвертой версии Macromedia Flash было наложено ограничение на 20 000 повторений, при попытке выполнить большее кол-во циклов, компьютер во избежании зависания прекращал выполнение кода. Начиная с пятой версии ограничение снято, компьютер только выдает сообщение, что происходит замедление выполнения программы и дает возможность самостоятельно прекратить программу.
Для добавление нового ключевого кадра щелкните на кадре №2 в слое действия и нажмите клавишу F7. Flash создаст, новый пустой ключевой кадр.
Для импорта рисунка выберете команду Файл – Импорт из других форматов. Будьте внимательны, если в указанной вами папке находятся файлы названные однотипно, например. car1? car2 и т. д. то компьютер предложит их импортировать все сразу. Если вы импортируете векторный рисунок, он окажется на холсте в виде набора группированных объектов. Не забудьте его сгруппировать в единое целое. Если вы импортируете точечный рисунок, он автоматически помещается в библиотеку, а на сцене мы видим его копию.
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.
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 ()
.
Для установки или изменения обработчика события мыши, выполните следующие действия.
- Выберите кнопку, с которой необходимо связать действие либо для которой необходимо изменить обработчик событий.
- Откройте панель Actions и выполните одно из следующих действий.
- Если вы хотите установить обработчик события мыши, выберите действие
on ()
из категории
Actions Movie Control
.
- Если вы хотите изменить обработчик события мыши для уже существующего действия, выберите строку-оператор, содержащую название события, и на области отображения параметров установите соответствующий флажок.
- В области параметров отображается список различных обработчиков события мыши. Установите флажок рядом с названием соответствующего обработчика, и ваш сценарий автоматически будет обновлен. На рисунке показан внешний вид панели 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. Работа с действиями кадра
- Создайте новый файл
Документ
Flash
.
- На Сцене 1 создайте анимацию.
- Добавьте Сцену 2 и создайте анимацию для данной сцены.
- Перейдите на Сцену 1, добавьте слой и пропишите
действие переход на сцену 2
.
- На Сцене 2 или последней сцене вашего проекта поставьте кнопку, по клику которой откроется Сцена 1.
- Сохраните файл под именем Фамилия_21.fla.
- Опубликуйте в формате.swf
- И пришлите в одном архиве.
Практическая работа № 22. Нескольких действий в одном сценарии
- Создайте новый файл
Документ
Flash
.
- На Слои 1 в первом кадре пропишем команду
stop()
, для того чтобы анимация не начиналось, т.е. не происходило никаких действий.
- Создайте Слой 2. Начиная со 2 кадра и до 31, создайте анимацию, которая будет воспроизводиться при нажатии кнопки мыши.
- В 31 кадре пропишите остановку анимации, чтобы никаких действий не происходило.
- Добавьте Слой 3. Начиная со 32 кадра и до 62, создайте анимацию когда кнопка будет отпущена.
- Добавьте Слой 4. И разместите на нем кнопку. И пропишите действия:
on (press) {
GotoAndPlay
(2); //
при нажатии кнопку будет происходить действия начиная со 2 кадра
on (release) {
gotoAndPlay(32); //
будет происходить действия начиная со 32 кадра, когда кнопка будет отпущена
- Протестируйте программу.
- Сохраните файл под именем Фамилия_22.fla.
- Опубликуйте в формате.swf
- И пришлите в одном архиве.
Использование действий для создания основных элементов управления воспроизведением фильма
Мы уже рассмотрели процесс связывания действий с различными элементами фильма. В данном разделе мы дадим обзор самых важных и полезных действий языка 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()
, необходимо выполнить следующее.
- Выберите кнопку, кадр или экземпляр клипа, с которым вы хотите связать действие.
- Откройте панель
Actions
.
- В области элементов
ActionScript
откройте подкатегорию
Browser/Network
и выполните двойной щелчок на значке действия
getURL
().
Действие
getURL()
имеет три параметра, которые должны быть определены: URL,
Window
(Окно) и
Variables
(Переменные). Существует также возможность использовать выражение, в котором описывается местоположение URL. Для этого необходимо установить флажок
Expression
(Выражение) справа от поля URL.
- В поле URL необходимо ввести абсолютный или относительный путь к ресурсу. Абсолютный путь включает полный адрес URL, например http://www.
it
-
n
.
ru
. Относительный путь содержит информацию о нахождении файла в пределах файловой структуры, где сохранен Flash-фильм, например такую:
currentfolder
/
folderl
/
folder
().
- Раскрывающийся список
Window
позволяет определить, в каком окне браузер будет загружать документ, на который указывает URL. Вы можете ввести определенное имя фрейма или окна, ввести выражение, которое описывает местоположение окна, либо выбрать один из следующих элементов раскрывающегося списка.
- _self
. Документ загружается в текущем окне, где в настоящий момент воспроизводится фильм.
- _blank
. Документ загружается в новом окне.
- _parent
. Данный элемент указывает на текущее окно и позволяет заменить только фрейм, где в настоящий момент воспроизводится фильм.
- _top
. Данный элемент целесообразно использовать тогда, когда ваш фильм воспроизводится во фрейме, а новый документ, на который указывает URL, должен заполнить все окно браузера.
- Раскрывающийся список Variables (Переменные) используется для передачи переменных на URL, с которым вы устанавливаете связь.
- Don"t Send
(не передавать). Данный элемент установлен по умолчанию и используется в тех случаях, когда нет необходимости в обмене данными.
- Send Using GET
(передавать с использованием метода GET). Данный элемент списка выбирают в тех случаях, когда необходимо передать несколько переменных и объем передаваемых данных небольшой.
- Send Using Post
(передавать с использованием метода POST). Данный элемент списка выбирают в тех случаях, когда необходимо передавать большой объем информации.
Практическая работа № 23. Ставим ссылки на картинки
- Создайте новый файл
Документ
Flash
.
- Импортируйте все необходимые изображения для будущих кнопок (Ctrl
+
R
).
- Выделите первую картинку и нажмите
F8
. Конвертируйте ее в кнопку.
- Дважды кликните на мувиклипе.
- Теперь кликните на кадре с заголовком Over и добавьте кадр, нажав F6.
- Создайте новый слой и кликните на кадре с заголовком Over и добавьте кадр (F6). После при помощи Rectangle Tool (R) обведите картинку.
- Вернитесь обратно на главную сцену и при помощи инструмента выделения (V) кликните на кнопке, нажмите F9 и введите следующий AS-код:
- Повторите все предыдущие шаги для других картинок.
- Протестируйте программу.
- Сохраните файл под именем Фамилия_23.fla.
- Опубликуйте в формате.swf
- И пришлите в одном архиве.
Задание
Создайте презентацию на свободную тема, используя материал урока.
Литература
- Гурвиц, Майкл, Мак-Кейб,
Лора. Использование Macromedia Flash MX. Специальное издание.: Пер. с англ. М.: Издательский дом "Вильяме", 2003. 704 с.: ил. Парал. тит. англ.
- Уотролл Э., Гербер Н. Эффективная работа:
Flash
MX
. СПб.: Питер; Киев:
DHV
, 2003. 720 с.: ил.
- http://www.interface.ru/
PAGE 1
Область элементов ActionScript
Раскрывающийся список сценариев
Область отображения сценария
Поскольку 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.