Interakcja z myszą

Flash Player 9 i nowsze wersje, Adobe AIR 1.0 i nowsze wersje

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; 
}