0

私は現在、他の 3 つの swf ファイルをロードする親ムービークリップ内で 3 つの uiloaders を使用しています。これらの各ムービークリップには、叩いたときに異なるサウンドを呼び出すキーボード イベントがあります。

ムービークリップに移動して親に戻ると問題が発生します。イベント リスナーがまだアクティブです。uiloader から swf ファイルをアンロードするなど、さまざまなことを試してきましたが、イベントはまだアクティブであり、焦点が合っていない後でも直接アクセスできます。

問題は、ステージ上にイベント リスナーがあることだと確信していますが、swf ファイルから取り出した後、それをアンロードする方法がよくわかりません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

あなたは正しいです。ほとんどの場合、キーボード イベントはステージに登録されます (つまり、stage.addEventListener( KeyboardEvent.KEY_UP, someFunction ); )。これは、ステージがムービークリップへの参照を保持し、アンロードしようとしてもガベージ コレクションが行われないようにすることを意味します。

これを回避するには 2 つの方法があります。あなたは、keyboardListener stage.removeEventListener( KeyboardEvent.KEY_UP, someFunction ); の登録を解除する必要があります。または、リスナーを弱参照として登録できます。

stage.addEventListener(KeyboardEvent.KEY_UP, someFunction, false, 0, true );

最後の引数 (true) は、イベントが弱参照として登録されていることを意味します。デフォルトは false です。

于 2011-05-04T21:03:44.417 に答える