Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

effective_AdobeFlashCS3

.pdf
Скачиваний:
7
Добавлен:
10.04.2015
Размер:
2.23 Mб
Скачать

81

Условие if(this.visited) {

this._alpha = alpha_dim; } else {

//normal alpha this._alpha = alpha_mid;

}

Проверяет выла ли нажата кнока, если это произошло, то значение alpha_dim, в противном случае: this._alpha = alpha_mid.

Кнопка сброса выполняет сброс параметра visited для всех кнопок.

XML фотогаллерея

027.fla. Запустите проект и посмотрите на его работу. Откройте файл gallery_list. Данный файл содержит описание и название файлов которые отображаются в галереи, если будет необходимость добавить новые файлы, то можно поступить по аналогии. Создайте новый файл.

Задайте темно-серый цвет фона. Инструментом текст (с выбранной опцией статического текста) напишите: “My Gallery” разместите надпись в левом верхнем углу сцены. Цвет оранжевый, шрифт Verdana, размер 14, жирный. Сохраните его с именем loader в папке с основным проектом. Вставить, Новый символ, ФР с именем myloader. Вернитесь на сцену. Перенесите символ на сцену и разместите его на левой границе сцены сразу под текстовой надписью. Задайте имя экземпляра loader_mc. Перейдите в 1КК и разверните панель действий в которой напишите: loader_mc.loadMovie(“027.swf”);

Запустите проект и посмотрите на его работу. Перенесите файл sunset.jpg в папку с изображениями галереи. Внесите соответствующие изменения в файл gallery_list:

<image>

<name>Sunset at the beach</name> <image>sunset.jpg</image>

</image>

Запустите проект и посмотрите на его работу.

Прокрутка для текста

Откройте файл id и просмотрит его содержимое. Создайте новый файл во флеш и сохраните его рядом с файлом id. При помощи инструмента текст на сцене создайте динамическое текстовое поле по высоте сравнимое в вертикальным размером сцены. Задайте возможность многострочного вывода и html форматирование:

82

Отключите кнопку Выбираемый которая позволяет выделять текст в текстовом поле, и поставьте видимость границ: Показать рамку вокруг текста. Задайте имя экземпляра textbox. В панели компонентов разверните раздел: User Interface. На сцену перенесите UIScrollBar. Если поместить компонент на край текстового поля, то компонент автоматически масштабируется под размер текстового поля. Лкм по 1КК, разверните панель действий в которой и запишите:

myVars=new LoadVars(); myVars.onLoad=function(){

textbox.htmlText=this.Pitch;

}

Запустите проект и посмотрите на его работу. Допишите скрипт. myVars.load(“id.txt”);

Запустите проект и посмотрите на его работу. Измените параметры текстового поля: синий цвет текста, размер 20. Запустите проект и посмотрите на его работу.

MP3 проигрыватель

musicplayer.fla. Запустите проект и посмотрите на его работу. Откройте music1.fla, посмотрите на его содержание.

Форма для отправки e-mail

030.fla. Запустите проект и посмотрите на его работу. Включите и выключите слой Thank You. Запустите проект, заполните форму отправки сообщения. После нажатия на кнопку Submit появится сообщение об ошибке вызова php файла. Откройте файл Emailvlidation.php и посмотрите переменные, используемые файлом. Из библиотеки перенесите на сцену новое текстовое

поле TextInput, разместите его под полем телефона. Выберите поле, в панели

параметров выберите основные параметры компонентов.

Задайте имя экземпляра – fax. Укажите горизонтальный размер – Ш=200. При помощи инструмента Текст напишите рядом с текстовым полем Fax. Перейдите в слой actions, разверните панель действий. Измените скрипт:

var fields:Array = [

83

// Input Field, Validate Function ['name', 'validateName'], ['email', 'validateEmail'], ['msg', 'validateMessage'], ['phone','']

];

Внутри описания массива допишите строку:

['fax','']

А после строки ['phone',''] поставьте запятую – ,

Вфайл Emailvlidation.php добавьте строчку в разделе описания переменных: $fax = $_POST['fax'];

И строчку:

$email_info .= "Fax: " . $fax . "\n";

Вразделе работы с переменными.

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

Создайте новый файл ActionScript 3.0. В панели действий включите Помощник по сценариям. В панели выбора действий выберите stop и перенесите правее:

import fl.motion.Animator; not_set_yet.stop();

Вправой части появляется список действий. Лкм по 2 строке,

Впанели действий появляется поле выбора объектов к которому

необходимо применить команду остановки. Напишите в нем my_mc, это название подставится:

my_mc.stop();

Таким образом, видно, что во многом есть схожесть AS1, AS2 и AS3. Ранее импортирование не требовалось.

Связь с ФР

Создайте новый файл ActionScript 3.0. При помощи инструмента прямоугольник с зеленым цветом заливки, без контуров нарисуйте прямоугольник. Выделите его, F8, ФР, имя mcRectangle. Задайте имя экземпляра rectangle1_mc. При помощи инструмента свободного

84

преобразования измените размер и угол поворота объекта. Из библиотеки перенесите на сцену еще 2 экземпляра, измените их параметры. Одному из экземпляров задайте оттенок. Назовите прямоугольники rectangle2_mc и rectangle3_mc.

Создайте новый слой с именем actions. Лкм по 1КК слоя actions, в панели действии запишите:

rectalgle1_mc.alpha=.5;

Запустите проект.

Измените значение на 0.15. Запустите проект.

Создайте новый файл ActionScript 3.0. Переименуйте слой в actions, разверните панель действий. Запишите:

var userName=”Tode”;

В данном случае произойдет автоматическая типизация, но в данном случае при работе с такой переменной будут возникать проблемы при вызове методов для объектов. Чтобы таких проблем не возникало необходимо указывать:

var userName:String=”Tode”;

Для проверки работы присвоения переменной запишите ниже: trace(userName);

trace(“Vse Ok”);

Запустите проект и проверьте его работоспособность. Ниже запишите комментарий в одну строчку:

// мой первый скрипт

Икомментарий в две строки: /* а может вовсе

Ине первый*/

Использование функций

001.fla. Запустите проект и проверьте его работоспособность. Создайте новый слой с именем actions. Лкм по 25 кадру, F6. Разверните панель действий. Запишите:

stop();

Данная команды выполнят остановку проекта. Запустите проект и проверьте его работоспособность. Заменимте скрипт:

gotoAndStop(2);

Данная команда выполняет безусловный переход на 2 кадр и остановку. Запустите проект и проверьте его работоспособность.

85

002.fla. Посмотрите содержимое проекта. Запишем функцию (Ф) которая будет управлять сноубордистом. Лкм по 1КК в слое actions. В панели действий запишите:

function moveBoarder():void{ boarder_mc.y=50; boarder_mc.rotation=45;

}

moveBoarder();

void – обозначает функцию которая не возвращает значение, boarder_mc.y=50; – задает координату y. boarder_mc.rotation=45; – задает поворот в градусах. moveBoarder(); - вызывает Ф.

Запустите проект.

003.fla. Посмотрите содержимое проекта. Лкм по 1КК в слое actions. Измените Ф таким образом, чтобы она возвращала значение:

function moveBoarder():Number

{

boarder1_mc.y -= 150; boarder1_mc.scaleX = 2; boarder1_mc.scaleY = 2; return boarder1_mc.y;

}

boarder1_mc.y = moveBoarder();

Для того, чтобы Ф вернула значение. Необходимо типизация Ф, использовался return и дальнейшее присвоение значение.

Запустите проект.

Выведите в трайсе значение: trace(moveBoarder());

Запустите проект.

Измените последнюю строчку на: boarder2_mc.y = moveBoarder();

004.fla. Посмотрите содержимое проекта. Расположите еще двух сноубордистов. Задайте им имена экземпляров: boarder1_mc, boarder2_mc, boarder3_mc. Лкм по 1КК в слое actions.

function moveBoarder():void{ boarder1_mc.y=50;

86

boarder1_mc.rotation=45;

}

moveBoarder();

В таком виде Ф будет применяться только для одно ФР, измените Ф. function moveBoarder(boarder:MovieClip):void{

boarder.y=50;

boarder.rotation=45;

}

moveBoarder(boarder2_mc); moveBoarder(boarder1_mc); moveBoarder(boarder3_mc);

Ф вызвана три раза для различных ФР. Для того, чтобы все ФР имели разеые координаты измениет Ф:

function moveBoarder(boarder:MovieClip, movement:Number, rotationAmt:Number):void{

boarder.y-=movement; boarder.rotation+=rotationAmt;

}

Изменилось описание Ф, надо изменить и вызов Ф. moveBoarder(boarder1_mc, 150,45); moveBoarder(boarder2_mc, 250,90); moveBoarder(boarder3_mc, 50,180);

Запустите проект.

События на мышку

005.fla. Посмотрите содержимое проекта. Лкм по 1КК в слое actions. В панели действий запишите:

boarder_mc.addEventListener(MouseEvent.CLICK, onClick);

Тем самым было описано событие, специфичное для boarder_mc. Ниже запишите Ф

function onClick(event:MouseEvent):void{ trace(“click!!!”);

}

Данная Ф выводит в trace сообщение о том, что был произведен щелчок лкм по объекту. Добавьте кусок кода который переводит ФР в режим кнопки: boarder_mc.buttonModer=true;

поскольку предыдущий скрип работает, то можно добавить ему реальных действий: внутри Ф запишите:

boarder_mc.y-=15; boarder_mc.rotation+=45;

87

Чтобы каждое нажатие приводило к изменению координаты у на -15 и повороту на 45 градусов. Для того, чтобы в дальнейшее описанное событие можно было применить к другим объектам измените применение действие внутри Ф:

event.target.y-=15; event.target.rotation+=45;

Добавьте новое событие: boarder_mc.addEventListener(MouseEvent.ROLL_OVER, boarderOver); function boarderOver(event:MouseEvent):void{ event.target.alpha=.5;

}

И еще событие на убирание мышки с объекта. boarder_mc.addEventListener(MouseEvent.ROLL_OUT, boarderOut); function boarderOut(event:MouseEvent):void{ event.target.alpha=1;

}

Запустите проект.

События на клавиатуру

006.fla. Посмотрите содержимое проекта. Лкм по 1КК в слое actions. В панели действий запишите:

stage.addEventListener(KeyboardEvent.KEY_DOWN,jump); function jump(event:KeyboardEvent):viod{

boarder_mc.y-=50;

}

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

Запустите проект.

Добавьте действие по отпусканию клавиши на клавиатуре: stage.addEventListener(KeyboardEvent.KEY_UP,land); function land(event:KeyboardEvent):viod{

boarder_mc.y+=50;

}

Запустите проект.

В функции добавьте: trace(event.keyCode);

Которые будут выводить код нажатой клавиши. Запустите проект. Сохраните проект.

88

Действия на кадр

Лкм по 1КК в слое actions. В панели действий внутри функции jump запишите действие, отменяющие описание события: stage.removeEventListener(KeyboardEvent.KEY_DOWN,jump);

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

Внутри Ф land допишите противоположность – добавление действия: stage.addEventListener(KeyboardEvent.KEY_DOWN,jump);

Запустите проект.

Добавьте действие которое будет происходить каждый кадр: stage.addEventListener(Event.ENTER_FRAME,flip);

function flip(event:Event):void{ boarder_mc.rotation+=45;

}

Запустите проект. Сделайте так, чтобы поворот был возможен только по нажатию на клавишу клавиатуры: внутри Ф jump перенесите: stage.addEventListener(Event.ENTER_FRAME,flip);

во избежание двойного описания событий, описание события, указанное вне Ф jump заремаркируйте.

Чтобы по отпусканию клавиши на клавиатуре соубордист перестал вращаться внутри Ф land запишите:

stage.removeEventListener(Event.ENTER_FRAME,flip);

Запустите проект.

Внутри Ф flip добавьте изменение координаты: boarder_mc+=45;

Измените изменение координат в Ф jump и land: boarder_mc.y-=150;

и

boarder_mc.y+=150;

Соответственно. Запустите проект.

Действия на кнопкие

007.fla. Посмотрите содержимое проекта. Лкм по 1КК в слое actions. В панели действий запишите:

var link:URLRequest=new URLRequest(“http://www.ifmo.ru”); button_mc.addEventListener(MouseEvent.CLICK, onClick); function onClick(event:MouseEvent):void{

navigateToURL(link);

}

button_mc.buttonMode=true;

89

Вначле ссылка определяется объект для вызова URL, после чего при помощи navigateToURL, осуществляется переход на URL.

Таймер

008.fla. Посмотрите содержимое проекта. Войдите в ФР в виде сноубордиста. Создайте слой с именем actions. Лкм по 1КК в слое actions, в панели действий запишите:

stop();

Вернитесь на сцену. Задайте имя экземпляра для сноубордиста: animation_mc. Лкм по 1КК в слое actions, в панели действий запишите:

var jumpTimer:Timer = new Timer(5000);

//Описывается таймер как новый объект, который будет происходить с задержкой 5000 //миллисекунд. jumpTimer.addEventListener(TimerEvent.TIMER, jump);

function jump(event:TimerEvent):void{ animation_mc.paly();

}

//Теперь необходимо запустить таймер jumpTimer.start();

Если вы хотите, чтобы таймер сработал 1 раз необходимо изменить первую строчку на:

var jumpTimer:Timer = new Timer(5000,1);

Классы

Создайте новый фал – Файл ActionScript. Сохраните его с названием CustomClass. Запишите в файле:

package

{

class CustomClass

{

function CustomClass()

{

trace("custom class working!");

}

}

}

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

90

Для того, чтобы класс не являлся абстракцией необходимо, чтобы он существовал для практических задач. Для того, чтобы работать с ФР необходимо его изменить:

package

{

import flash.display.MovieClip;

class CustomClass extends MovieClip

{

function CustomClass()

{

trace("custom class working!");

}

}

}

Для того, чтобы класс был связан с ФР необходимо, чтобы он стал расширением стандартных возможностей ФР, т.е. Movie Clip. Для того. Чтобы класс стал именно расширением, а не замещением возможностей ФР, необходимо было дописать строку импортирования.

Теперь, по мимо конструктора, создадим метод в виде Ф, не возвращающей значение:

package

{

import flash.display.MovieClip;

class CustomClass extends MovieClip

{

function CustomClass()

{

trace("custom class working!");

}

function myFunction():void

{

trace("my method is working!");

}

}

}

Существует возможность разграничить права доступа к свойствам и методам класса, например:

package

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]