大家。
我试图让我的子弹实例在离开屏幕后被删除,但我明白了:
Error 1061: Call to a possibly undefined method removeChild through a reference with static type __AS3__.vec:Vector.<Bullet>.
这是错误指向的地方:
private function manageBullets(event:Event):void {
for each(var i in bManager.bulletVector){
if (i.y < -20) {
bManager.removeChild(i); //This line
bManager.bulletVector = bManager.bulletVector.splice(bManager.bulletVector.indexOf(i), 1);
}
}
}
我是AS3 / OOP的新手,所以不要太苛刻我:P
答案 0 :(得分:2)
你做了两件不正确的事:
1)尝试在vector对象上调用removeChild()方法。 removeChild()子方法只能在DisplayObjectContainer及其后代类上访问。
2)你将它自己的一个元素分配给由splice()返回的bulletVector,所以在这个表达式后,bulletVector不再是vector而是它是bullet对象。如果bManager的类未定义为动态,则应该为您提供“TypeError”。
我猜你的代码应该是这样的:
private function manageBullets(event:Event):void {
for each(var i in bManager.bulletVector){
if (i.y < -20) {
if(i.parent != null) //Check if i is in display list
{
i.parent.removeChild(i); //Remove i from display list
}
/* And then just remove i from vector no need to handle returned value.*/
bManager.bulletVector.splice(bManager.bulletVector.indexOf(i), 1);
}
}
}