你需要的.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);
Here's some more information about type casting in 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);
}
的事情是,我不知道這個類,因爲我的孩子的可各種不同的類別。 –
但他們都有財產「tipo」。 –
@JonathanCalb創建一個基類,*您的所有對象*將從定義的屬性'tipo'繼承。如果你需要對每個元素做不同的事情,你應該用一個'update()'方法創建一個基類,所有的對象都會擴展,然後在每個子類中做任何你需要做的事情。 – Marty