När användaren klickar på Lägg till form-knappen anropas metoden
addShape()
i klassen DrawingCanvas. En ny GeometricSprite-klass instansieras genom anrop av lämplig konstruktorfunktion i en av GeometricSprite-underklasserna enligt följande exempel:
public function addShape(shapeName:String, len:Number):void
{
var newShape:GeometricSprite;
switch (shapeName)
{
case "Triangle":
newShape = new TriangleSprite(len);
break;
case "Square":
newShape = new SquareSprite(len);
break;
case "Circle":
newShape = new CircleSprite(len);
break;
}
newShape.alpha = 0.8;
this.addChild(newShape);
}
Varje konstruktormetod anropar metoden
drawShape()
där egenskapen
graphics
används för klassen (ärvs från klassen Sprite) så att lämplig vektorgrafik ritas. Exempelvis innehåller metoden
drawShape()
i klassen CircleSprite följande kod:
this.graphics.clear();
this.graphics.lineStyle(1.0, this.lineColor, 1.0);
this.graphics.beginFill(this.fillColor, 1.0);
var radius:Number = this.size / 2;
this.graphics.drawCircle(radius, radius, radius);
Den näst sista raden i funktionen
addShape()
anger egenskapen
alpha
för visningsobjektet (ärvs från klassen DisplayObject). På så vis blir alla visningsobjekt som läggs till på arbetsytan något genomskinliga och användaren kan se objekten som finns under.
Med den sista raden i metoden
addChild()
läggs det till nya visningsobjektet i listan med underordnade objekt för instansen av klassen DrawingCanvas, som redan finns med i visningslistan. Detta resulterar i att det nya visningsobjektet visas på scenen.
Gränssnittet för programmet innehåller två textfält;
selectedSpriteTxt
och
outputTxt
. Textegenskaperna för dessa textfält uppdateras med information om objekten GeometricSprite som har lagts till på arbetsytan eller valts av användaren. Klassen GeometricSprite hanterar denna informationsrapporterande åtgärd genom att åsidosätta metoden
toString()
enligt följande:
public override function toString():String
{
return this.shapeType + " of size " + this.size + " at " + this.x + ", " + this.y;
}
Egenskapen
shapeType
anges med lämpligt värde i konstruktormetoden för respektive GeometricSprite-underklass. Exempelvis kan metoden
toString()
returnera följande värde för en CircleSprite-instans som nyligen lagts till i DrawingCanvas-instansen:
Circle of size 50 at 0, 0
Metoden
describeChildren()
i klassen DrawingCanvas körs som slinga igenom arbetsytans lista med underordnade, där egenskapen
numChildren
(ärvs från klassen DisplayObjectContainer) används som villkor till
for
-slingan. En lista med strängar för alla underordnade objekt genereras enligt följande:
var desc:String = "";
var child:DisplayObject;
for (var i:int=0; i < this.numChildren; i++)
{
child = this.getChildAt(i);
desc += i + ": " + child + '\n';
}
Den resulterande strängen används för att ange egenskapen
text
i textfältet
outputTxt
.