В этой статье мы расcмотрим работу с такими событиями как MouseEvent.CLICK, MouseEvent.DOUBLE_CLICK, MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_OUT, MouseEvent.MOUSE_OVER, MouseEvent.MOUSE_UP, MouseEvent.MOUSE_WHEEL, MouseEent.MOUSE_MOVE
Вначале мы создам пустой файл EventExample.fla и в свойствах файла укажу класс MouseEventExample.as который будет инициализироватся при старте флеша. Указанный класс я создам в пакет event.
Код класса MouseEventExample.as
1 2 3 4 5 6 7 8 9 10 11 12 13
|
package event { import flash.display.Sprite; public class MouseEventExample extends Sprite { private var size:uint = 100; private var bgColor:uint = 0xFFCC00; public function MouseEventExample() { var child:ChildSprite = new ChildSprite(); addChild(child); } } }
|
В классе ChildSprite буду реалзованы основные события, которые возникают в среде flash.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class ChildSprite extends Sprite { private var size:uint = 50; private var overSize:uint = 60; private var backgroundColor:uint = 0xFFCC00; private var overColor:uint = 0xCCFF00; private var downColor:uint = 0x00CCFF; public function ChildSprite() { draw(size, size, backgroundColor); addEventListener(MouseEvent.CLICK, clickHandler); addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler); } }
|
С помощью метода draw будет отрисовыватся квадрат.
1 2 3 4 5 6 7
|
private function draw(w:uint, h:uint, bgColor:uint):void { graphics.clear(); // обнуляем graphics.lineStyle(3,0x000000); // рисуем обводку graphics.beginFill(bgColor); // создаем заливку graphics.drawRect(0, 0, w, h); // рисуем квадрат или прямоуголmник graphics.endFill(); // замыкаем линии }
|
Функция для события MouseEvent.CLICK
1 2 3
|
private function clickHandler(event:MouseEvent):void { trace("Клик"); }
|
Функция для события MouseEvent.DOUBLE_CLICK
1 2 3
|
private function doubleClickHandler(event:MouseEvent):void { trace("Двойной клик"); }
|
Функция для события MouseEvent.MOUSE_DOWN, MouseEvent.MOUSE_UP, MouseEent.MOUSE_MOVE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
private function mouseDownHandler(e:MouseEvent):void { trace("Нажатие кнопки мыши"); draw(overSize, overSize, downColor); var sprite:Sprite = Sprite(e.target); // хватаем текущий объект sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.startDrag(); } private function mouseMoveHandler(e:MouseEvent):void { trace("Двигаем спрайт"); e.updateAfterEvent(); // перерисовываем экран при движении } private function mouseUpHandler(e:MouseEvent):void { trace("Отпускание кнопки мыши"); var sprite:Sprite = Sprite(e.target); // хватаем текущий объект sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.stopDrag(); draw(overSize, overSize, overColor); }
|
Функция для события MouseEvent.MOUSE_OUT
1 2 3 4
|
private function mouseOutHandler(event:MouseEvent):void { trace("Убрали курсор с объекта"); draw(size, size, backgroundColor); // перерисовка квадрата }
|
Функция для события MouseEvent.MOUSE_OVER
1 2 3 4
|
private function mouseOverHandler(event:MouseEvent):void { trace("Навели мышку"); draw(overSize, overSize, overColor); }
|
Функция для события MouseEvent.MOUSE_WHEEL
1 2 3
|
private function mouseWheelHandler(e:MouseEvent):void { trace("Колесико мышки delta: " + e.delta); }
|
Далее создадим два события, которые будут висеть на всех элементах экрана.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public function MouseEventExample() { addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler); addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler); var child:ChildSprite = new ChildSprite(); addChild(child); } public function mouseOverHandler(e:MouseEvent) { e.target.alpha=0.5; } public function mouseOutHandler(e:MouseEvent) { e.target.alpha=1; }
|
Рабочий пример приведенного выше кода, можно скачать и посмотреть ниже. Пример можно взглянуть по этой ссылке . Ссылка откроется в текущем окне.
Комментарии