0

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
    }
}
4

1 に答える 1

0

原因が見つかりました:

正しく再ディスパッチするには、イベントに適切な clone メソッドが必要です。関連リンクを参照してください:

http://knowledge.robotlegs.org/kb/application-architecture/why-doesnt-my-event-trigger-the-command-it-is-mapped-to

于 2012-12-23T13:27:15.757 に答える