I clic del mouse creano degli eventi del mouse che possono essere utilizzati per attivare delle funzionalità interattive. Un listener di eventi può essere aggiunto allo stage per intercettare gli eventi del mouse che si verificano in qualunque punto all'interno del file SWF. È possibile anche aggiungere dei listener di eventi agli oggetti sullo stage che ereditano da InteractiveObject (ad esempio, Sprite o MovieClip); questi listener vengono attivati quando si fa clic sull'oggetto.
Come accade con gli eventi da tastiera, anche gli eventi del mouse si propagano. Nell'esempio seguente, dal momento che
square
è un elemento secondario dello stage, l'evento viene inviato sia dallo Sprite
square
che dall'oggetto Stage quando si fa clic sul quadrato:
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 + "]");
}
Nell'esempio precedente, notare che l'evento mouse contiene le informazioni sul clic. Le proprietà
localX
e
localY
contengono la posizione del clic sull'elemento di livello più basso nella catena di visualizzazione. Se, ad esempio, si fa clic sull'angolo in alto a sinistra di
square
vengono visualizzate le coordinate locali [0,0], dal momento che si tratta del punto di registrazione di
square
. In alternativa, le proprietà
stageX
e
stageY
fanno riferimento alle coordinate globali del clic sullo stage. Lo stesso clic visualizza [50,50] per queste coordinate, dal momento che
square
è stato spostato in corrispondenza di queste coordinate. Entrambe queste coppie di coordinate possono essere utili a seconda del tipo di risposta che si desidera attribuire all'interazione dell'utente.
Nota:
nella modalità a schermo intero è possibile configurare l'applicazione in modo da utilizzare il blocco del mouse. Il blocco del mouse disattiva il cursore e abilita il movimento svincolato del mouse. Per ulteriori informazioni, vedete
Uso della modalità a schermo intero
.
L'oggetto MouseEvent contiene le proprietà booleane
altKey
,
ctrlKey
e
shiftKey
, che è possibile utilizzare per verificare se al momento del clic del mouse viene premuto anche il tasto Alt, Ctrl o Maiusc.
Trascinamento di oggetti Sprite sullo stage
Potete consentite agli utenti di trascinare un oggetto Sprite sullo stage utilizzando il metodo
startDrag()
della classe Sprite. Nel codice seguente ne viene illustrato un esempio:
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);
}
Per ulteriori dettagli, vedete la sezione sulla creazione di interazioni trascinamento mouse in
Modifica della posizione
.
Trascinamento della selezione in AIR
In Adobe AIR, potete abilitare il supporto del trascinamento della selezione per consentire agli utenti di trascinare dati dentro e fuori da un'applicazione. Per ulteriori dettagli, vedete
Trascinamento in AIR
.
Personalizzazione del cursore del mouse
Il cursore del mouse (puntatore) può essere nascosto o sostituito con qualunque oggetto di visualizzazione sullo stage. Per nascondere il cursore del mouse, chiamate il metodo
Mouse.hide()
. È possibile personalizzare il cursore chiamando
Mouse.hide()
, intercettando sullo stage l'evento
MouseEvent.MOUSE_MOVE
e impostando le coordinate di un oggetto di visualizzazione (il cursore personalizzato) sulle proprietà
stageX
e
stageY
dell'evento. Nell'esempio seguente viene illustrata un'esecuzione di base di questa operazione:
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;
}