私は小惑星ゲームを作成しています。私のメインクラスでは、船が発射した弾丸を扱う際にいくつかの問題があります。Flash AS3 - オブジェクトを完全に削除するremoveChild()?
すべての箇条書きは「箇条書き」クラスであり、メインクラスの「弾丸」という配列に格納されています。弾丸が画面を出ると、メインクラスのremoveBullet(bulletID)が呼び出されます。
private function removeBullet(id:int)
{
removeChild(bullets[id]);
bullets.splice(id);
}
私のBulletクラスには、「stillHere」をトレースするenterFrameリスナーがあります。したがって、addChildを使用して箇条書きをメインステージに追加するとすぐに、「stillHere」が出力パネルでポップアップを開始します。
私の問題は、removeBulletを呼び出した後でも、 "stillHere"が出力パネルにポップアップしていて、削除しようとしたオブジェクトがまだメモリのどこかに張り付いているということです。
完全に削除するにはどうすればよいですか?
こんにちは、bullets [id]がBulletインスタンスへの参照を返すことを確認してください。定義されていないかどうかを確認するために弾丸(ID)をトレースしてみてください。 – lomanf
はい、あります。この関数は、弾丸をスクリーンから視覚的にも正常に除去します。 – Lebowski156
オブジェクトプールについて聞いたことがありますか?いくつかの実装を使用する準備ができていますし、この種のもの(弾丸)のために自分で作ることもできます。 – Daniel