Обычно это делается для того, чтобы внедрить диспетчер карты событий в объект:
<MethodInvoker generator="{MyClass}" method="someMethod" arguments="{[a, b]}">
<Properties dispatcher="{scope.dispatcher}"/>
</MethodInvoker>
Внутренний тег Properties
устанавливает свойства объекта, создаваемого MethodInvoker
, и свойства гарантированно устанавливаются до вызова метода.
Очевидно, что класс должен иметь публичное свойство с именем dispatcher
(или любым другим именем, которое вы предпочитаете), чтобы это работало. Для отправки событий, которые вы хотите прослушать в карте событий, вызовите dispatcher.dispatchEvent(...)
.
Если объект, созданный с помощью MethodInvoker
, будет использоваться более одного раза, если, скажем, это менеджер, общая идиома состоит в том, чтобы создать его с помощью ObjectBuilder
- это блок обработчика событий, который запускается FlexEvent.INITIALIZE
:
<EventHandlers type="{FlexEvent.INITIALIZE}">
<ObjectBuilder generator="{MyClass}" constructorArguments="{scope.dispatcher}"/>
</EventHandlers>
В этом примере диспетчер событий внедряется как аргумент конструктора, но вы можете использовать внутренний тег Properties
так же, как с MethodInvoker
.