我正在尝试制作宇宙飞船游戏,当我使用该removeChild()
方法将弹丸或敌舰移出舞台时遇到问题。
这是代码的相关部分:
var bulletsArr:Array = new Array();
var eShipsArr:Array = new Array();
for (var c = 0; c < eShipsArr.length; c++){
stage.addChild(eShipsArr[c]);
}
....
stage.addEventListener(KeyboardEvent.KEY_DOWN,shoot);
function shoot (e:KeyboardEvent):void{
if(e.keyCode==17){
var pj:projectile = new projectile();
pj.x = SShip.x;
pj.y = SShip.y;
stage.addChild(pj);
bulletsArr.push(pj);
if(bulletsArr.length >= 10){
bulletsArr = bulletsArr.slice(1,10);
}
}
}
stage.addEventListener(Event.ENTER_FRAME,checkHit);
function checkHit (e:Event):void{
for (var d = 0; d < bulletsArr.length; d++){
for(var f = 0; f < eShipsArr.length; f++){
if(bulletsArr[d].hitTestObject(eShipsArr[f])){
trace(bulletsArr[d].parent);
stage.removeChild(bulletsArr[d]); //ArgumentError: Error #2025!!!!
}
}
}
}
当我使用removeChild()
withstage
时,跟踪返回null
。没有它,跟踪将返回Stage object
。在这两种情况下,相同的错误都会跳转。