Kliknięcia myszy wywołują zdarzenia, które mogą inicjować operacje interaktywne. Możliwe jest dodanie do stołu montażowego detektora, który będzie wykrywał zdarzenia myszy zachodzące w dowolnym miejscu pliku SWF. Możliwe jest również dodawanie detektorów zdarzeń do umieszczonych na stole obiektów potomnych względem klasy InteractiveObject (no. Sprite lub MovieClip); te detektory są wywoływane po kliknięciu obiektu.
Podobnie jak zdarzenia z klawiatury, również zdarzenia związane z myszą uczestniczą w propagacji. W poniższym przykładzie obiekt
square
jest podrzędny wobec stołu montażowego, dlatego kliknięcie kwadratu powoduje wywołanie zdarzenia zarówno z ikonki
square
, jak i z obiektu Stage:
var square:Sprite = new Sprite();
square.graphics.beginFill(0xFF0000);
square.graphics.drawRect(0,0,100,100);
square.graphics.endFill();
square.addEventListener(MouseEvent.CLICK, reportClick);
square.x =
square.y = 50;
addChild(square);
stage.addEventListener(MouseEvent.CLICK, reportClick);
function reportClick(event:MouseEvent):void
{
trace(event.currentTarget.toString() + " dispatches MouseEvent. Local coords [" + event.localX + "," + event.localY + "] Stage coords [" + event.stageX + "," + event.stageY + "]");
}
W poprzednim przykładzie zwraca uwagę fakt, że zdarzenie pochodzące z myszy zawiera informacje o miejscu kliknięcia. Właściwości
localX
oraz
localY
zawierają położenie kliknięcia względem obiektu znajdującego się najniżej w łańcuchu wyświetlania. Na przykład kliknięcie w lewym górnym rogu obiektu
square
spowoduje przekazanie lokalnych współrzędnych [0,0], ponieważ takie współrzędne ma punkt rejestracji obiektu
square
. Dostępne są także właściwości
stageX
i
stageY
zawierające wartości współrzędnych globalnych miejsce klikniętego na stole montażowym. To samo kliknięcie spowoduje przekazanie współrzędnych globalnych [50,50], ponieważ obiekt
square
został przemieszczony do tych współrzędnych. Obie te pary współrzędnych są użyteczne, a wybór jednej z nich zależy od planowanej reakcji na zdarzenie.
Uwaga:
W trybie pełnoekranowym można skonfigurować aplikację tak, aby korzystała z blokowania myszy. Zablokowanie myszy powoduje wyłączenie kursora i umożliwia poruszanie myszą bez punktu odniesienia. Więcej informacji zawiera rozdział
Praca z trybem pełnoekranowym
.
Obiekt MouseEvent zawiera także właściwości
altKey
,
ctrlKey
i
shiftKey
typu Boolean. Umożliwiają one sprawdzenie, czy w momencie kliknięcia był naciśnięty klawisz Alt, Ctrl lub Shift.
Przeciąganie obiektów Sprite po stole mntażowym
Korzystając z metody
startDrag()
klasy Sprite, można umożliwić użytkownikowi przeciąganie obiektu Sprite po stole montażowym. Poniższy przykładowy kod ilustruje ten mechanizm:
import flash.display.Sprite;
import flash.events.MouseEvent;
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(0, 0, 40);
var target1:Sprite = new Sprite();
target1.graphics.beginFill(0xCCFF00);
target1.graphics.drawRect(0, 0, 100, 100);
target1.name = "target1";
var target2:Sprite = new Sprite();
target2.graphics.beginFill(0xCCFF00);
target2.graphics.drawRect(0, 200, 100, 100);
target2.name = "target2";
addChild(target1);
addChild(target2);
addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown)
function mouseDown(event:MouseEvent):void
{
circle.startDrag();
}
circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
function mouseReleased(event:MouseEvent):void
{
circle.stopDrag();
trace(circle.dropTarget.name);
}
Więcej szczegółów zawiera część dotycząca przeciągania za pomocą myszy w sekcji
Zmiana położenia
.
Przeciąganie i upuszczanie w środowisku AIR
W środowisku Adobe AIR dostępny jest mechanizm przeciągania danych do i z aplikacji. Szczegółowe informacje na ten temat zawiera sekcja
Przeciąganie i upuszczanie w środowisku AIR
.
Dostosowywanie kursora myszy
Kursor (wskaźnik) myszy można ukryć lub podmienić dla dowolnego obiektu wyświetlanego na stole montażowym. Aby ukryć kursor myszy, należy wywołać metodę
Mouse.hide()
. Dostosowywanie kursora myszy odbywa się poprzez wywołania metody
Mouse.hide()
, wykrywanie zdarzeń
MouseEvent.MOUSE_MOVE
na stole montażowym i ustawianiu współrzędnych obiektu wyświetlanego (kursora niestandardowego) na równe właściwościom
stageX
oraz
stageY
zdarzenia. Poniższy przykład ilustruje podstawową realizację tego zadania:
var cursor:Sprite = new Sprite();
cursor.graphics.beginFill(0x000000);
cursor.graphics.drawCircle(0,0,20);
cursor.graphics.endFill();
addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
Mouse.hide();
function redrawCursor(event:MouseEvent):void
{
cursor.x = event.stageX;
cursor.y = event.stageY;
}