我正在构建一个Flash游戏,我正在建立一个阵列,跟踪屏幕上的一堆电源。当玩家进行抓取时,它需要从屏幕上消失(这很容易)但是它也需要从阵列中移除,以便碰撞检测循环不会变得非常麻烦。我尝试使用splice,但我一直得到null引用错误,这是相关的代码。
public function collect():void {
try {
Main.powerUps.splice(index, 1);
stage.removeChild(this);
}catch (e:Error) {
trace("Error in splice");
}
}
}
然后当我创建我的PowerUp对象时,我传递一个参数,该参数被分配给index,这是当时Power Ups数组的长度。任何人都可以看到这个代码有什么问题或(最好)提供更优雅的解决方案吗?提前感谢您的帮助。
答案 0 :(得分:1)
优雅的解决方案:一起使用indexOf()
和splice()
!
var index:int = Main.powerUps.indexOf( powerup );
Main.powerUps.splice(index, 1);
其中powerup
是对数组Main.powerUps
中存储的对象的引用。
我还创建了一个可能对你有用的小课:
它有一个.remove()
方法,所以你可以这样做:
powerUps.remove(powerup);