flex イベントリスナーとその削除

2011/08/18

addEventListener()とかを使ったら無限ループっぽくなった。

removeEventListener()を使う。
※イベントリスナーを取り除く。

とりあえず解決はできたけど…わからないことだらけ。

イベントリスナー

そもそも「イベントリスナーって何よ?」って感じ。

イベントリスナーとはイベントが発生した場合に呼ばれるメソッドを持つクラス。

こういう感じの説明らしいんだけど今ひとつイメージできない。
イメージできないので自分の言葉に置換えしたのが下記。

イベントリスナーとは「イベントが発生するか監視。さらに発生後、関数(メソッド)を実行」ってことをやってくれる関数(クラス)。

イベントリスナーを取り除く

「なぜイベントリスナーを取り除く必要があるのか?」ってことなんだよね。
細かいことはイメージしきれない。

イベント発生ごとにメソッド(関数)実行したいときは、イベントリスナーは取り除かない。
イベント初発生時のみにメソッド(関数)実行したいときは、イベントリスナーを取り除く。

removeEventListenerの考え方のイメージ図

removeEventListener

「イベントリスナーを取り除く」ってのは「removeEventListener」ってのを使う。

[対象].removeEventListener([イベント], [関数];

参考

調べているときに見つけたヤツ。今の私には理解できない。
URLもどっかいったので…。

たしか…「関数の呼出し元のイベントリスナーが複数あり、呼出し元のイベントリスナーのみ削除」ってことをしたいとか。

  1. //イベントつけてるところ
  2. xxx.addEventListener(FaultEvent.FAULT, faultHandler);
  3.  
  4. //共通のハンドラ
  5. private function faultHandler(e:FaultEvent):void
  6. {
  7.   IEventDispatcher(e.currentTarget).removeEventListener(FaultEvent.FAULT, faultHandler);
  8. }
  9.  
  10. というような感じです。
  11. e.currentTargetにはイベントのソースが入りますので、そのソールからremoveするとOKです。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい