表示オブジェクトに登録されているイベントリスナーを特定する方法はありますか?すべてのイベントリスナーを表示オブジェクトから削除して、アプリケーションのコンテキスト変更に基づいて新しいイベントリスナーを割り当てることができます。表示オブジェクトからすべてのイベントリスナーを削除するにはどうすればよいですか?
答えて
jeceuyperは
側はないが...右です...
いくつかの技術的な詳細:私は挿入のため少し遅く...あなたはハンドラ関数を格納するのにDictionary
を使用することをお勧めが、はるかに速く除去するために...また、Dictionary
は非常に重要である、弱参照をサポートしていますイベント処理の場合でも...心に留めておいてください、useCapture
が、その後... ...二回
幸運を同じハンドラを追加することができます。
back2dosを指摘してくれてありがとう! – jdecuyper
Glennが正しく、removeAllListenerメソッドやlistAllListenerメソッドなどはありません。 それにもかかわらず、あなたのdiplayObjectはIEventDispatcherインターフェイスを実装し、オブジェクトに追加または削除されたすべてのリスナーを追跡することができます。 DisplayObject
はとても正確には...すでにIEventDispatcher
を実装しないEventDispatcher
を拡張します:あなたがリスナーを追跡するためにaddEventListener
とremoveEventListener
をオーバーライドする必要が
back2dosは、使用すべきアプローチを言及している)、私がやったことはMovieClipクラスを拡張したと機能のすべての種類を実装しました私は毎日使っていますが、ムービークリップクラスの一部ではありません。 addEventListenerをクラスのオーバーライド
protected var listeners : Dictionary = new Dictionary();
override public function addEventListener(type : String, listener : Function, useCapture : Boolean = false, priority : int = 0, useWeakReference : Boolean = true) : void
{
var key : Object = {type:type,useCapture:useCapture};
if(listeners[ key ]) {
removeEventListener(type, listeners[ key ], useCapture);
listeners[ key ] = null;
}
listeners[ key ] = listener;
super.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
protected function removeListeners() : void
{
try
{
for (var key:Object in listeners) {
removeEventListener(key.type, listeners[ key ], key.useCapture);
listeners[ key ] = null;
}
}catch(e:Error){}
}
...関数ポインタを組み込むことなくキーに型を組み込むことを除けば、オブジェクト上に与えられた型のリスナーを1つだけ持つことができます。複数のリスナーを許可するには、リスナー関数ポインタをキーオブジェクトに追加し、そのキーを何らかのダミー値(1など)に設定するだけです。 –
含めこれはハックの一種が、いくつかの(おそらくほとんどの場合)であり、それは、あなたはそれをゼロにし、再初期化するために、表示オブジェクトを簡単に設定することができ、その後、再設定します視覚障害をゼロにします。
これには、すべてのイベントリスナーを削除する追加のボーナスがあります。
既に何百ものリスナーとオブジェクトがあるアプリでこれを行っているのでなければ、表示オブジェクトの再構成を許容できる限り、完全に正常に動作するはずです。
明らかに、データをロードするようなコンストラクタで何か狂ったことをしているものでは、この操作を行うべきではありません。
function a(){
mc.addEventListener(Event.ENTER_FRAME,function(){
...
}
}
function b(){
mc.removeEventListener(Event.ENTER_FRAME,function(){});
}
作品...この1の
- 1. javascriptでイベントリスナーを削除するにはどうすればよいですか?
- 2. React.jsで、componentWillUnmountを使用してイベントリスナーを削除すると、イベントリスナーが削除されるようにするにはどうすればよいですか?
- 3. 親オブジェクトを削除してコレクションからDATABASEを削除するにはどうすればよいですか?
- 4. 匿名コンポーネントからイベントリスナーを削除するにはどうすればよいですか?
- 5. Subversionから削除されたディレクトリのファイルを表示するにはどうすればよいですか?
- 6. Node.jsイベントリスナーと空きメモリがあるオブジェクトを削除するにはどうすればいいですか?
- 7. オブジェクトからすべての名前を表示するにはどうすればいいですか?
- 8. OpsCenterでオブジェクトを削除するにはどうすればよいですか?
- 9. WordPressのサイトからすべての翻訳を削除するにはどうすればよいですか?
- 10. PythonのDiscordロールからすべてのユーザーを削除するにはどうすればよいですか?
- 11. 配列からすべてのhtmlタグを削除するにはどうすればよいですか?
- 12. LDAPからすべてのレコードを削除するにはどうすればよいですか?
- 13. カレンダーからすべてのパネルを削除するにはどうすればよいですか?
- 14. RichDataTextBoxからすべての2行目を削除するにはどうすればよいですか?
- 15. NSTableViewからすべてのNSTableColumnを削除するにはどうすればよいですか?
- 16. ページからすべてのリスナーを削除するにはどうすればよいですか?
- 17. アプリからすべてのQTranslatorを削除するにはどうすればよいですか?
- 18. コマンドラインからすべてのEC2インスタンスを削除するにはどうすればよいですか?
- 19. iOS:ARCを有効にしてメモリからオブジェクトを削除するにはどうすればよいですか?
- 20. typescriptのオブジェクトからいくつかのプロパティを削除するにはどうすればよいですか?
- 21. Homebrewタップからすべてを削除するにはどうすればよいですか?
- 22. Githubから失効したブランチをすべて削除するにはどうすればよいですか?
- 23. ''をリストから削除するにはどうすればよいですか?
- 24. C++でオブジェクトのベクトルから1つのアイテムを削除するにはどうすればよいですか?
- 25. Mathオブジェクトのすべてのプロパティを一覧表示するにはどうすればよいですか?
- 26. Kinvey Business Logicで古いオブジェクトをコレクションから削除するにはどうすればよいですか?
- 27. SQFのユニットからすべての機器を削除するにはどうすればいいですか?
- 28. Node.js:イベントリスナーから値を返すにはどうすればよいですか?
- 29. findAllメソッドでキャッシュから特定のオブジェクトを削除するにはどうすればよいですか?
- 30. プロパティと一致する配列からオブジェクトを削除するにはどうすればよいですか?
基本的にはだまされやすい人は、先に今日ログイン:http://stackoverflow.com/questions/1452539/flash-as3-eventdispatcher-any-way-of-getting登録リストのリスト – Glenn
しかし、簡単な答えは、あなた自身がハッシュマップなどを使って管理しなければならないということです。 – Glenn