Muisinvoer vastleggen

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Muisklikken maken muisgebeurtenissen die kunnen worden gebruikt om interactieve functionaliteit te activeren. U kunt een gebeurtenislistener aan het werkgebied toevoegen om te luisteren naar muisgebeurtenissen die ergens in het SWF-bestand optreden. U kunt ook gebeurtenislisteners aan objecten in het werkgebied toevoegen die het interactiemodel van InteractiveObject overerven (bijvoorbeeld Sprite of MovieClip); deze listeners worden geactiveerd wanneer op het object wordt geklikt.

Net als toetsenbordgebeurtenissen, worden ook muisgebeurtenissen teruggekoppeld. In het volgende voorbeeld wordt de gebeurtenis zowel vanuit de sprite square als vanuit het object Stage verzonden wanneer er op square wordt geklikt, aangezien square een onderliggend object van Stage is:

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 + "]"); 
}

In het vorige voorbeeld bevat de muisgebeurtenis positiegegevens over de klik. De eigenschappen localX en localY bevatten de locatie van de klik op het item op het laagste niveau in de weergaveketen. Wanneer er bijvoorbeeld in de linkerbovenhoek van square wordt geklikt, worden de lokale coördinaten [0,0] gemeld, aangezien dit het registratiepunt van square is. De eigenschappen stageX en stageY verwijzen daarentegen naar de algemene coördinaten van de klik in het werkgebied. Bij dezelfde klik wordt [50,50] voor deze coördinaten gemeld, aangezien square naar deze coördinaten is verplaatst. Beide coördinatenparen kunnen nuttig zijn, al naar gelang de wijze waarop u op gebruikersinteractie wilt reageren.

Opmerking: In de modus Volledig scherm kunt u de toepassing zodanig configureren dat muisvergrendeling wordt gebruikt. Bij de muisvergrendeling wordt de cursor uitgeschakeld en kan de muis zonder begrenzingen worden verplaatst. Zie Werken met de modus Volledig scherm voor meer informatie.

Het object MouseEvent bevat ook de Booleaanse eigenschappen altKey , ctrlKey en shiftKey . U kunt deze eigenschappen gebruiken om te controleren of er tijdens de muisklik ook op Alt, Ctrl of Shift wordt gedrukt.

Sprites door het werkgebied slepen

Aan de hand van de methode startDrag() van de klasse Sprite kunt u toestaan dat gebruikers een Sprite-object door het werkgebied slepen. In de volgende code wordt hiervan een voorbeeld gegeven:

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

Zie in De positie wijzigen de sectie over het maken van muisinteractie voor slepen-en-neerzetten voor meer informatie.

Slepen en neerzetten in AIR

In Adobe AIR kunt u ondersteuning voor slepen en neerzetten inschakelen zodat gebruikers gegevens uit en naar uw toepassing kunnen slepen. Zie Slepen en neerzetten in AIR voor meer informatie.

De muiscursor aanpassen

De muiscursor (muisaanwijzer) kan worden verborgen of vervangen door een weergaveobject in het werkgebied. Als u de muiscursor wilt verbergen, roept u de methode Mouse.hide() aan. U kunt de cursor aanpassen door Mouse.hide() aan te roepen, in het werkgebied naar de gebeurtenis MouseEvent.MOUSE_MOVE te luisteren en de coördinaten van een weergaveobject (de aangepaste cursor) in te stellen op de eigenschappen stageX en stageY van de gebeurtenis. In het volgende voorbeeld wordt een eenvoudige uitvoering van deze taak weergegeven:

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