私は、フラッシュアニメーションのミサイルの後ろにある "スモールトレイル"である小さなスプライトを持っています。私は自分自身の作成と削除を処理するために、自己完結型のクラスをした:EventListeners自身の登録を解除しますか?
public class Spark extends Sprite {
private var lifetime:Number = 15;
private var gfxRef:MovieClip = new fx_particleTrail();
private var canvas:Sprite;
public function Spark(x:Number, y:Number, to:Sprite) {
gfxRef.x = x;
gfxRef.y = y;
canvas = to;
canvas.addChild(gfxRef);
addEventListener(Event.ENTER_FRAME, tick);
}
private function tick(e:Event):void {
lifetime --;
gfxRef.alpha -= 0.05;
if (lifetime <= 0) {
gfxRef.alpha = 0;
removeEventListener(Event.ENTER_FRAME, tick);
canvas.removeChild(gfxRef);
gfxRef = null;
}
}
}
すべてが正常に動作するようです - 私は、このルーチンのうちのいずれかのエラーを追跡することはできません。しかし、時には火花が永遠に画面に張り付くことがあります。寿命カウンタは特定の数で停止し、進展しません。あたかもEventListenerが幽霊をあきらめることに決めたかのようです。
は、私はいくつかのポイントまたは別の質量の障害があることを示す、彼らはアルファ-tudeのさまざまな状態に失敗すると、それが初期化いないかなり確信しています。
私は、おそらく一度にこれほど多くを生成しても問題だったが、私は単一のものを生成するためにそれを装備思った - と私はいくつかの痕跡で投げた:
> Born
> 15
> 14
> 13
> 12
そして、それはそこで終了。イベントリスナーを配置し、それはいくつかの理由で停止!sの
これは、(Flash開発環境を使用していない)AS3 /メモ帳でFlexSDKと協力しています。
ヘルプ!これを引き起こしている可能性があります
おそらく、質問者が自分のプロジェクトを快適に感じたら、彼のプロジェクトを投稿したいかもしれませんか? – aaaidan
うーん、あなたは絶対に正しいようです!クラスの内容が少し早くガベージコレクションされているように見えます。 ヒントをありがとう! –