.getChildAt()
最初にの結果をnaftaBonusClass
オブジェクトにキャストする必要があります。
if(getChildAt(i).localToGlobal(new Point(stage.y, 0)).y > 650)
{
var myObj:naftaBonusClass = getChildAt(i) as naftaBonusClass;
trace(myObj.tipo);
removeChildAt(i);
}
または単に:
trace((getChildAt(i) as naftaBonusClass).tipo);
AS3 での型キャストに関する詳細情報を次に示します。
各オブジェクトがどうなるかわからないということに関しては、それをクリーンアップして適切に管理する必要があります。たとえば、各要素を配列に格納し、それらの配列のそれぞれに特定のタイプのオブジェクトを含めることができます。for each()
その後、型付きループを使用して配列を調べることができます。
for each(var i:naftaBonusClass in naftaList)
{
trace(i.tipo);
}
さらに進んで、オブジェクトの基本クラスを作成し、ループで呼び出されるメソッドをそこに保存できます。そうすれば、基本クラスにキャストしてそのメソッドを呼び出すだけでよく、サブクラスでオーバーライドできます。
class MyChild extends MovieClip
{
public function update():void{ }
}
次に、変更されたnaftaBonusClass
:
class naftaBonusClass extends MyChild
{
private var _tipo:String = "nafta";
// This is where the work should be done.
override public function update():void
{
trace(tipo);
}
public function get tipo():String
{
return _tipo;
}
}
そして、更新されたループ:
if(getChildAt(i).localToGlobal(new Point(stage.y, 0)).y > 650)
{
(getChildAt(i) as MyClass).update();
removeChildAt(i);
}