Wanneer de gebruiker op een instantie GeometricSprite klikt, roept de toepassing de gebeurtenishandler
onMouseDown()
aan. Zoals getoond door de volgende coderegel, wordt de gebeurtenishandler ingesteld om naar gebeurtenissen muis omlaag in de constructorfunctie van de klasse GeometricSprite te luisteren:
this.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
De methode
onMouseDown()
roept vervolgens de methode
showSelected()
van het object GeometricSprite aan. Als het de eerste keer is dat deze methode voor het object wordt aangeroepen, maakt deze methode een nieuw object Shape met de naam
selectionIndicator
en gebruikt deze de eigenschap
graphics
van het object Shape om een rood gemarkeerde rechthoek te tekenen:
this.selectionIndicator = new Shape();
this.selectionIndicator.graphics.lineStyle(1.0, 0xFF0000, 1.0);
this.selectionIndicator.graphics.drawRect(-1, -1, this.size + 1, this.size + 1);
this.addChild(this.selectionIndicator);
Als de methode
onMouseDown()
al een keer is aangeroepen, stelt de methode alleen de eigenschap
visible
van
selectionIndicator
in (die wordt overgeërfd van de klasse DisplayObject):
this.selectionIndicator.visible = true;
De methode
hideSelected()
verbergt de vorm
selectionIndicator
van het eerder geselecteerde object door zijn eigenschap
visible
op
false
in te stellen.
De gebeurtenishandlermethode
onMouseDown()
roept ook de methode
startDrag()
aan (die is overgeërfd van de klasse Sprite), die de volgende code bevat:
var boundsRect:Rectangle = this.parent.getRect(this.parent);
boundsRect.width -= this.size;
boundsRect.height -= this.size;
this.startDrag(false, boundsRect);
Dit staat de gebruiker toe om het geselecteerde object in het canvas te slepen, binnen de grenzen die zijn ingesteld door de rechthoek
boundsRect
.
Wanneer de gebruiker de muisknop loslaat, wordt de gebeurtenis
mouseUp
verzonden. De constructormethode van DrawingCanvas stelt de volgende gebeurtenislistener in:
this.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
Deze gebeurtenislistener wordt ingesteld voor het object DrawingCanvas, in plaats van voor de individuele objecten GeometricSprite. Wanneer het object GeometricSprite wordt gesleept, kan dit object namelijk achter een ander weergaveobject eindigen (een ander object GeometricSprite) wanneer de muisknop wordt losgelaten. Het weergaveobject op de voorgrond ontvangt in dat geval de gebeurtenis muis omhoog en niet het weergaveobject dat door de gebruiker wordt gesleept. Als u de listener aan het object DrawingCanvas toevoegt, wordt de gebeurtenis altijd afgehandeld.
De methode
onMouseUp()
roept de methode
onMouseUp()
van het object GeometricSprite aan, die hierop de methode
stopDrag()
van het object GeometricSprite aanroept.