Robotlegs で作成されたメディエーターがあり、その関連ビューは 2 種類のイベントをディスパッチします。メディエータがイベントをキャプチャすると、単にイベントがディスパッチされます。私が遭遇した問題は、最初のイベントは問題なく再ディスパッチされましたが、2 番目のイベントはディスパッチされませんでした。
ただし、別のハンドラーを 2 番目のイベントに手動で割り当てると、イベントは適切にキャプチャされます。
以下は関連するコードです。
public class MyMediator extends Mediator
{
[Inject]
public var view:MyView;
public override function onRegister():void
{
super.onRegister();
addViewListener( SomeEventTypeA.COOL_EVENT, dispatch, SomeEventTypeA ); // This event is dispatched correctly
addViewListener( SomeEventTypeB.STUCK, dispatch, SomeEventTypeB ); // This one is not correctly dispatched
//A twist, if I uncomment the following code, the event is captured by its handler
//addViewListener( SomeEventTypeB.STUCK, view_stuck, SomeEventTypeB );
}
private function view_stuck( event:SomeEventTypeB ):void
{
//ah ha, this is called correctly if the above relevant line is uncommented
}
}