0

オブジェクトが別のオブジェクトに衝突したときに爆発が再生されるようにします。これは、hitTestObject が true のときにこの関数を実行するためです。

function createExplosion():void {
var explosion:Explosion = new Explosion(enemy.x, enemy.y);
this.parent.addChild(explosion);
}

爆発クラスは、入力をその x 値と y 値に設定するだけで構成されます。次に、爆発のムービークリップに、アニメーションのフレームがいくつかあります。次のコードを使用して、キーフレームで (つまり、そのフレーム内のアクションとして) 終了します。

stop();
this.parent.removeChild(this);

私の質問はです。もう本当になくなったの?エラー 1009 が発生しないようにするには、stop() を追加する必要がありました。

4

1 に答える 1

0

表示リストから表示オブジェクトを削除しても、アニメーションが停止したり、メモリから削除されたりすることはありません。表示リストから削除するだけです。はい、アニメーションを停止し、そのオブジェクトに対してアクティブになっている可能性のあるイベント リスナーをすべて削除する必要があります。

ガベージ コレクションが実行されるまで、表示オブジェクトが完全になくなることはありません。しかし、そのオブジェクトへの参照がなくなるまで、それは起こりません。したがって、表示オブジェクトを参照する爆発と呼ばれる変数がある場合は、表示リストから削除した後、null に設定する必要があります。

explosion.stop();   // stop the animation
removeChild(explosion);  // remove from display list
explosion = null; // remove variable reference
// explosion now qualifies for garbage collection.

これはオブジェクトをすぐにメモリから削除するわけではなく、ガベージ コレクターにとって公平なゲームになるだけであることに注意してください。「AS3 Garbage Collection」をグーグルで検索して、そのプロセスの詳細を取得できます。

于 2013-04-06T00:24:14.477 に答える