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.