Главная Флеш Примеры событий MouseEvent в ActionScript3
E-mail Печать PDF

В этой статье мы  рас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;
}

Рабочий пример приведенного выше кода, можно скачать и посмотреть ниже. Пример можно взглянуть по этой ссылке . Ссылка откроется в текущем окне.

Комментарии

 
-2 #1 Bomp 2011-10-06 20:54 спасибо, все хорошо работает… почти , кроме DOUBLE_CLICK! почитал документацию, добавил doubleClickEnab led = true; но все равно не работает! хэлп! плиз! Цитировать
 
 
0 #2 Bomp 2011-10-07 20:30 написал mouseChildren = false; теперь всё работает! хотя не знаю почему :) Цитировать
 

Авторизация

Nice Ajax Poll

Какое из моих расширений самое лучшее?

Статистика



Реклама