今日知ったイディオム。なるほどと思った。
以下は、至って普通のコード。
package { import flash.events.*; import Hoge; public class Test { public function Test() { var hoge:Hoge = new Hoge(); hoge.addEventListener(Event.COMPLETE, trace); hoge.doSomething(); } } }
Test は普通に Hoge からのイベントをリスンしている。そして、Hoge
package { import flash.events.*; import Foo; public class Hoge extends EventDispatcher { public function Hoge() { } public function doSomething():void { var foo:Foo = new Foo(); foo.addEventListener(Event.COMPLETE, dispatchEvent); foo.doSomething(); } } }
10 行目に注目。
foo.addEventListener(Event.COMPLETE, dispatchEvent);
第二引数に dispatchEvent を指定することでそのままイベントをスルーできる。中間管理職的なオブジェクトにちょうど良いショートカットだと思う。