effective_AdobeFlashCS3
.pdf91
{
import flash.display.MovieClip;
public class CustomClass extends MovieClip
{
private _myVar:String;
public function CustomClass()
{
trace("custom class working!");
}
private function myFunction():void
{
trace("my method is working!");
}
}
}
Private доступен только объектам, созданным на основе этого класса. Public доступен всем объектам.
010.fla и FunButton.as. Перейдите описание класса и добавьте методы. Войдите внутрь конструктора и запишите описание событий которые будут происходить по наведению и убиранию мышки с объекта: this.addEventListener(MouseEvent.ROLL_OVER, grow); this.addEventListener(MouseEvent.ROLL_OUT, shrink);
Чтобы получить возможность использовать события мышки необходимо импортировать события:
import flash.events.MouseEvent;
Дале опишите Ф-и которые будут исполняться по наведению или убиранию мышки с объекта:
private function grow(event:MouseEvent):void
{
this.scaleX *= 1.5; this.scaleY *= 1.5;
}
private function shrink(event:MouseEvent):void
{
this.scaleX = _origXScale; this.scaleY = _origYScale;
}
92
Первая Ф будет изменять линейные размеры в 1.5 раза, а вторая возвращать первоначальный размер.
Вфайле 010.fla в библиотеке пкм по mcBoarder, Связывание. Поставьте галочку в пункте Экспортировать для ActionScript, класс FunButton. Запустите файл и проверьте его работоспособность.
Вернитесь в описание класса и добавьте свойство класса, которое будет содержать в себе масштаб объекта:
private var _origXScale:Number; private var _origYScale:Number;
а в конструктор класса – «обнуление» размеров:
_origXScale = this.scaleX; _origYScale = this.scaleY;
Проверьте как работает описанный класс на других объектах:
В010.fla. нарисуйте прямоугольник серого цвета без обводки, выделите его, преобразуйте его в ФР с именем rectangle. Задайте связывание и поставьте класс rectangle, в качестве базового класса поставьте FunButton.
Запустите файл и проверьте его работоспособность.
011.fla. и ButtonClass.as. Выделите все объекты на сцене и удалите их. В
ButtonClass.as опишите класс: package
{
import flash.display.MovieClip;
public class ButtonClass extends MovieClip
{
private var boarder:mcBoarder;
public function ButtonClass()
{
trace(“class working”);
}
}
}
В свойствах документа запишите класс документа: ButtonClass. Для символа mcBoarder укажите связывание, экспорт для ActionScript, класс – mcBoarder,
базовый класс: FunButton – созданный ранее. Допишите класс: import mcBoarder;
import FunButton;
внутри класса: запишите свойство: private var boarder:mcBoarder;
93
В конструкторе класса создайте экземпляр класса который будет унаследован от mcBoarder:
boarder = new mcBoarder(); addChild(boarder); boarder.x = 200; boarder.y = 200;
Таким образом, класс будет выглядеть следующим образом: package
{
import flash.display.MovieClip; import mcBoarder;
import FunButton;
public class ButtonClass extends MovieClip
{
private var boarder:mcBoarder;
public function ButtonClass()
{
boarder = new mcBoarder(); addChild(boarder); boarder.x = 200;
boarder.y = 200;
}
}
}
Если возникают проблемы с адресацией к классам, в настройке публикации в закладке Flash нажмите на кнопку Параметры, в параметрах присутствует раздел Путь к классам, если вы помните взаимное расположение файлов, то можете воспользоваться кнопкой «+», если нет, то кнопкой в виде прицела в которой осуществите поиск и выбор файлов классов, используемых при работе.
Использование условий
012.fla. Перейдите в 1кк слоя actions, в панели действий откройте изначальный скрипт. Добавьте действие:
event.target.y-=100;
Проверьте действие скрипта. var jumping:Boolean=false;
вместо event.target.y-=100; запишите: if(jumping){
94
event.target.y+=100;
jumping=false;
}
else{
event.target.y-=100’ jumping=true;
}
Можете сами немного модифицировать скрипт, для большей компактности
013.fla. Перейдите в 1кк слоя actions, в панели действий откройте изначальный скрипт. Допишите:
if(boarder1_mc.height>boarder2_mc.height){ trace(“1 is taller 2”);
}
else{
trace(“condition isn’t true”);
}
Измените этот кусок скрипта: if(boarder1_mc.rotation==boarder2_mc.rotation){
trace(“1 rotation equal 2”);
}
else{
trace(“condition isn’t true”);
}
На сцене доверните один из объектов и проверьте результат. Теперь сделайте так, что если поворот объектов не одинаков, то запишите в разделе else:
boarder1_mc.rotation=boarder2_mc.rotation
014.fla. Перейдите в 1кк слоя actions, в панели действий откройте изначальный скрипт. Допишите:
if(boarder1_mc.rotation == boarder2_mc.rotation)
{
trace("condition 1 is true");
}
else if(boarder1_mc.alpha == boarder2_mc.alpha)
{
trace("condition 2 is true");
}
95
Проверьте работу скрипта. Измените скрипт: if(boarder1_mc.rotation == boarder2_mc.rotation)
{
trace("condition 1 is true");
}
else if(boarder1_mc.alpha != boarder2_mc.alpha)
{
trace("condition 2 is true");
}
else if(boarder1_mc.y > boarder2_mc.y)
{
trace("condition 3 is true");
}
else
{
trace("no conditions are true");
}
Последнее альтернативное условие, в случае если ни одно из условий не выполнено.
015.fla. Перейдите в 1кк слоя actions, в панели действий откройте изначальный скрипт. Допишите:
if(boarder1_mc.rotation == boarder2_mc.rotation && boarder1_mc.alpha == boarder2_mc.alpha)
{
trace("condition is true");
}
else
{
trace("condition is false");
}
&& играет роль логического И, || - логического ИЛИ, ! – логического НЕ. Проверьте работу скрипта, измените условие
if(boarder1_mc.rotation == boarder2_mc.rotation II boarder1_mc.alpha == boarder2_mc.alpha)
Проверьте работу скрипта.
Циклы
Создайте новый файл. В 1КК запишите: for(var i:Number=0;i<20;i++){
trace(i);
96
}
Проверьте работу скрипта.
016.fla. Задайте связывание для mcBoarder, поставьте Экспорт для ActionScript. Перейдите в 1кк слоя actions, в панели действий напишите:
var boarder:mcBoarder; for(var i:Number=0;i<6;i++){
boarder=new mcBoarder(); addchild(boarder);
}
Проверьте работу скрипта.
017.fla. Перейдите в 1кк слоя actions, в панели действий откройте изначальный скрипт. Измените:
for(var i:Number=0;i<6;i++){ boarder=new mcBoarder(); addchild(boarder); boarder.x=i*75;
}
Проверьте работу скрипта. Измените скрипт. var boarderX:Number=127;
var boarderY:Number=271; for(var i:Number=0;i<6;i++){
boarder=new mcBoarder(); addchild(boarder); boarder.x= boarderX; boarder.y= boarderY; boarderX+=100; boarderY-=100;
}
Проверьте работу скрипта. Измените скрипт. var boarderR:Number=0;
и
boarder.rotation= boarderR; boarderR-=45;
Проверьте работу скрипта.
97