ユーザーが「シェイプの追加」ボタンをクリックすると、アプリケーションは DrawingCanvas クラスの
addShape()
メソッドを呼び出します。アプリケーションは、次の例に示すように、新しい GeometricSprite のインスタンス化するために、いずれかの GeometricSprite サブクラスの適切なコンストラクター関数を呼び出します。
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);
}
各コンストラクターメソッドは
drawShape()
メソッドを呼び出し、このメソッドは、Sprite クラスから継承したクラスの
graphics
プロパティを使用して適切なベクターグラフィックを描画します。例えば、CircleSprite クラスの
drawShape()
メソッドには、次のコードが含まれています。
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);
addShape()
関数の最後から 2 番目の行は、DisplayObject クラスから継承した表示オブジェクトの
alpha
プロパティを設定します。これにより、キャンバスに追加される表示オブジェクトはわずかに透明になり、ユーザーはその背後にあるオブジェクトを見ることができます。
addChild()
メソッドの最後の行は、既に表示リストに載っている新しい表示オブジェクトを DrawingCanvas クラスのインスタンスの子リストに追加します。これにより、新しい表示オブジェクトがステージに表示されます。
アプリケーションのインターフェイスには、
selectedSpriteTxt
と
outputTxt
の 2 つのテキストフィールドが含まれています。これらのテキストフィールドのテキストプロパティは、キャンバスに追加されるかユーザーによって選択された GeometricSprite オブジェクトに関する情報で更新されます。 GeometricSprite クラスは、次のように
toString()
メソッドをオーバーライドすることにより、この情報報告タスクを処理します。
public override function toString():String
{
return this.shapeType + " of size " + this.size + " at " + this.x + ", " + this.y;
}
shapeType
プロパティは、各 GeometricSprite サブクラスのコンストラクターメソッドの中で、適切な値に設定されます。例えば、
toString()
メソッドは、DrawingCanvas インスタンスに新たに追加された CircleSprite インスタンスの次の値を返す場合があります。
Circle of size 50 at 0, 0
DrawingCanvas クラスの
describeChildren()
メソッドは、DisplayObjectContainer クラスから継承した
numChildren
プロパティを使用して
for
ループの限度を設定し、キャンバスの子リストをループします。このメソッドは、次のように、それぞれの子をリストしたストリングを生成します。
var desc:String = "";
var child:DisplayObject;
for (var i:int=0; i < this.numChildren; i++)
{
child = this.getChildAt(i);
desc += i + ": " + child + '\n';
}
結果のストリングは、
outputTxt
テキストフィールドの
text
プロパティを設定するために使用されます。