您需要先将结果.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()
循环查看 Array:
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);
}