Musaktiviteter skapar mushändelser som kan användas för att aktivera interaktiva funktioner. Du kan lägga till en händelseavlyssnare på scenen för att lyssna efter mushändelser som inträffar i SWF-filen. Du kan också lägga händelseavlyssnare till objekt på scenen, vilka ärver från InteractiveObject (till exempel Sprite och MovieClip). Dessa avlyssnare aktiveras när någon klickar på objektet.
Mushändelser bubblar, precis som tangentbordshändelser. I nästa exempel skickas händelsen både från
square
-spriten och scenobjektet när någon klickar på fyrkanten, eftersom
square
är underordnad scenen:
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 + "]");
}
I det föregående exemplet kan du lägga märke till att mushändelsen innehåller positionell information om klickhändelsen. Egenskaperna
localX
och
localY
innehåller platsen för klickhändelsen i den lägst underordnade i visningskedjan. Genom att exempelvis klicka i det övre vänstra hörnet rapporterar
square
de lokala koordinaterna [0,0] eftersom detta är registreringspunkten för
square
. Egenskaperna
stageX
och
stageY
refererar däremot till klickningens globala koordinater på scenen. Samma klickning rapporterar [50,50] för dessa koordinater eftersom
square
flyttades till dessa koordinater. Båda dessa koordinatpar kan vara användbara beroende på hur du vill besvara användarinteraktionen.
Obs!
I helskärmsläge kan du konfigurera programmet att använda låsning av musen. Om du låser musen inaktiveras markören och obegränsade musrörelser aktiveras. Mer information finns i avsnittet
Arbeta i helskärmsläge
.
Objektet MouseEvent innehåller de booleska egenskaperna
altKey
,
ctrlKey
och
shiftKey
. Du använder dessa egenskaper för att kontrollera om Alt-, Ctrl- eller skifttangenten också trycks ned samtidigt som musklickningen.
Dra och flytta sprites på scenen
Du kan göra det möjligt för användare att dra och flytta ett Sprite-objekt på scenen med metoden
startDrag()
för Sprite-klassen. Följande kod visar ett exempel på detta:
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);
}
Mer information finns i avsnittet om att skapa musinteraktion i
Ändra position
.
Dra-och-släpp i AIR
I Adobe AIR kan du aktivera stöd för dra-och-släpp-funktioner som gör det möjligt för användare att dra data in i och ut från programmet. Mer information finns i
Dra och släppa i AIR
.
Anpassa muspekaren
Muspekaren kan för alla visningsobjekt på scenen döljas eller fås att byta plats. Du döljer muspekaren genom att anropa metoden
Mouse.hide()
. Du anpassar pekaren genom att anropa
Mouse.hide()
, lyssnar av scenen efter
MouseEvent.MOUSE_MOVE
-händelsen och anger koordinaterna för ett visningsobjekt (din vanliga pekare) med händelseegenskaperna
stageX
och
stageY
. I följande exempel visas ett grundläggande exempel på hur detta kan göras:
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;
}