Samla in musindata

Flash Player 9 och senare, Adobe AIR 1.0 och senare

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.

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