1

画面上の一連のパワーアップを追跡する配列がある場所に構築しているフラッシュゲームがあります。プレーヤーが 1 つをつかむときは、画面から消える必要があります (これは簡単です) が、衝突検出ループが本当に面倒にならないように配列からも削除する必要があります。splice を使用してみましたが、null 参照エラーが発生し続けます。関連するコードは次のとおりです。

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

次に、PowerUp オブジェクトを作成するときに、その時点での PowerUp の配列の長さである index に割り当てられるパラメーターを渡します。このコードの何が問題なのか、または (できれば) より洗練されたソリューションを提供できる人はいますか? 助けてくれてありがとう。

4

1 に答える 1

1

エレガントなソリューション:indexOf()と をsplice()一緒に使用してください!

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

powerupは、配列内に格納されているオブジェクトへの参照ですMain.powerUps

少し前に、役に立つかもしれない小さなクラスも作成しました。

メソッドがある.remove()ので、次のことができます。

powerUps.remove(powerup);
于 2013-04-04T05:04:19.757 に答える