1

我有一个我正在构建的 Flash 游戏,其中我有一个数组来跟踪屏幕上的一堆电源。当玩家去抓一个时,它需要从屏幕上消失(这很容易),但它也需要从阵列中移除,这样碰撞检测循环就不会变得非常麻烦。我尝试使用拼接,但我不断收到空引用错误,这是相关代码。

public function collect():void {
            try {
                Main.powerUps.splice(index, 1);
                stage.removeChild(this);
            }catch (e:Error) {
                trace("Error in splice");
            }
        }
}

然后,当我创建我的 PowerUp 对象时,我将一个参数传递给它,该参数被分配给 index,该参数是当时 Power Ups 数组的长度。谁能看到这段代码有什么问题或(最好)提供更优雅的解决方案?提前感谢您的帮助。

4

1 回答 1

1

优雅的解决方案:indexOf()一起使用splice()

var index:int = Main.powerUps.indexOf( powerup );
Main.powerUps.splice(index, 1);

wherepowerup是对存储在数组中的对象的引用Main.powerUps

不久前,我还创建了一个可能对您有用的小类:

它有一个.remove()方法,所以你可以这样做:

powerUps.remove(powerup);
于 2013-04-04T05:04:19.757 回答