Привет!
В прошлом уроке я упомянул классах, так что приступим.
Что такое класс?
Классом можно называть, например, ручку. Ручку можно включить, выключить, написать ей что-нибудь - это методы класса. Также, у ручки есть характеристики: цвет, длина, толщина стержня, производитель - это поля класса.
Ок. Зачем мне это?
С классами всегда лучше. Чтобы создавать много объектов с одинаковым поведением.
Например, возьмем нашу кнопку из прошлого урока.
Много кнопок.
И как же мне сделать это?
Для начала, нужно понять структуру класса. Для примера возьмем вот такой класс:
Поехали.
После слова package пишем путь от .fla файла до файла с классом. Например:
Это все?
Собственно, Main - имя класса, а вот на extends стоит остановиться поподробнее. extends означает, что мы хотим наследовать класс от классов, идущих после оператора extends.
Например:
Это означает, что класс A унаследует поля и методы класса B, и с классом A можно работать точно так же, как и с классом B.
Долго еще?
Тут объявляются все переменные и константы класса. Ничего сложного.
Z-z-z-z....
Конструктор класса. Конструктор - это функция, которая будет вызываться при создании экземпляра класса.
Важно, чтобы название конструктора совпадало с названием класса и названием файла.
Здесь находятся остальные методы класса.
Теперь переделаем наш кнопко-проект.
Неужели.
Первое, что нужно сделать - это написать класс кнопки. Для этого заходим в библиотеку ( Windows -> Library ), там выбираем нашу кнопку, жмем правой кнопкой мыши -> Properties. Заполняем.
О Боги. Что все это значит?
Name - Ничего не значит. Просто пишем что-нибудь вменяемое, чтобы потом можно было легко найти объект.
Type - Знаем что это, проходили.
Export for ActionScript - Дает намвласть над миром возможность создавать символ из кода.
Class - Класс символа. Если мы не написали свой класс, то Flash создаст свой, необходимый для создания экземпляра символа.
Остальное нам не важно. Теперь непосредственно кодинг.
EpicButton.as:
В прошлом уроке я упомянул классах, так что приступим.
Что такое класс?
Классом можно называть, например, ручку. Ручку можно включить, выключить, написать ей что-нибудь - это методы класса. Также, у ручки есть характеристики: цвет, длина, толщина стержня, производитель - это поля класса.
Ок. Зачем мне это?
Например, возьмем нашу кнопку из прошлого урока.
Много кнопок.
И как же мне сделать это?
Для начала, нужно понять структуру класса. Для примера возьмем вот такой класс:
package { import flash.display.MovieClip; public class Main extends MovieClip { private var count : uint; public function Main () : void { this.sayHi(); } private function sayHi () : void { trace( "Hi!" ); } } }
Поехали.
package { ...
После слова package пишем путь от .fla файла до файла с классом. Например:
- MyAwesomeGame.fla
- Main.as
- objects
- Box.as
- Wall.as
В таком случае у Main.as после package ничего не нужно писать, а у Box.as и Wall.as после package пишем objects.
package objects { ...
Если есть вложенные папки, то их нужно разделять точками.
import flash.display.MovieClip; ...
Здесь импортируем все, что нам необходимо в этом классе. Не стоит писать что-то типа:
import flash.*;
.* означает, что нужно импортировать все, что находится в пакете.
Пример в студию.
Например, классу Main вдруг понадобился класс Box ( из примера про package ). Тогда пишем:
import objects.Box; ...На сколько я понимаю, если классы находятся в одном пакете, то импортировать не обязательно.
Это все?
public class Main extends MovieClip { ...
Собственно, Main - имя класса, а вот на extends стоит остановиться поподробнее. extends означает, что мы хотим наследовать класс от классов, идущих после оператора extends.
Например:
public class A extends B { ...
Это означает, что класс A унаследует поля и методы класса B, и с классом A можно работать точно так же, как и с классом B.
Долго еще?
private var count : uint; ...
Тут объявляются все переменные и константы класса. Ничего сложного.
Z-z-z-z....
public function Main () : void { ...
Конструктор класса. Конструктор - это функция, которая будет вызываться при создании экземпляра класса.
Важно, чтобы название конструктора совпадало с названием класса и названием файла.
private function sayHi () : void { ...
Здесь находятся остальные методы класса.
Теперь переделаем наш кнопко-проект.
Неужели.
Первое, что нужно сделать - это написать класс кнопки. Для этого заходим в библиотеку ( Windows -> Library ), там выбираем нашу кнопку, жмем правой кнопкой мыши -> Properties. Заполняем.
О Боги. Что все это значит?
Name - Ничего не значит. Просто пишем что-нибудь вменяемое, чтобы потом можно было легко найти объект.
Type - Знаем что это, проходили.
Export for ActionScript - Дает нам
Class - Класс символа. Если мы не написали свой класс, то Flash создаст свой, необходимый для создания экземпляра символа.
Остальное нам не важно. Теперь непосредственно кодинг.
EpicButton.as:
package { import flash.display.MovieClip; import flash.events.MouseEvent; public class EpicButton extends MovieClip { public function EpicButton ( options : Object ) : void { this.init( options ); } private function init ( options : Object ) : void { this.x = options.x; this.y = options.y; this.useHandCursor = true; this.buttonMode = true; this.mouseOutHandler(); this.addEventListener( MouseEvent.MOUSE_OVER, mouseOverHandler ); this.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler ); this.addEventListener( MouseEvent.MOUSE_OUT, mouseOutHandler ); this.addEventListener( MouseEvent.MOUSE_UP, mouseUpHandler ); // Добавляем кнопку на сцену Main.stageLink.addChildAt( this, 0 ); } private function mouseOutHandler ( e : MouseEvent = null ) : void { this.gotoAndStop( 1 ); } private function mouseOverHandler ( e : MouseEvent = null ) : void { this.gotoAndStop( 2 ); } private function mouseDownHandler ( e : MouseEvent = null ) : void { this.gotoAndStop( 3 ); } private function mouseUpHandler ( e : MouseEvent = null ) : void { this.gotoAndStop( 4 ); } } }
Main.as:
Подключаем как главный класс, конечно.
package { import flash.display.MovieClip; import flash.display.Stage; public class Main extends MovieClip { // Статичная ссылка на сцену // Статичная для того, чтобы можно было обратиться из любого места кода public static var stageLink : Stage; public function Main () : void { this.init(); } private function init () : void { // Сохраняем ссылку на сцену Main.stageLink = stage; this.createEpicButtons(); } private function createEpicButton ( x : Number, y : Number ) : void { var // Создаем объект с необходимыми параметрами options : Object = { x : x, y : y }, // Создаем новый экземпляр кнопки // И передаем туда объект с параметрами epicButton = new EpicButton( options ); } private function createEpicButtons () : void { this.createEpicButton( 86, 44 ); this.createEpicButton( 440, 50 ); this.createEpicButton( 225, 156 ); this.createEpicButton( 423, 201 ); this.createEpicButton( 148, 292 ); this.createEpicButton( 366, 324 ); } } }
Все файлы должны быть в одной папке. Если не получилось - держите исходник. :)
Комментариев нет:
Отправить комментарий