FlexNativeMenu с роботом ногами
Я использую среду Robotlegs, я занят настольным приложением AIR и хочу использовать FlexNativeMenu. Проблема в том, что я не могу создать класс представления на основе mx.controls.FlexNativeMenu для внедрения зависимостей. Когда Robotlegs не используется, код довольно прост - любая помощь будет принята с благодарностью. Благодарю.
2 ответа
Как правило, вы можете использовать все, что вы хотите для просмотра. Проблема в том, что метод onRegister посредника будет вызываться только в том случае, если ваше представление отправляет событие ADDED_TO_STAGE. И поскольку FlexNativeMenu не запускает это событие, ваш посредник не работает ( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/FlexNativeMenu.html)
для RobotLegs v2
Если вы пытаетесь внедрить его в FlexNativeMenu (в дальнейшем именуемый FNM), вы можете попробовать что-то вроде этого (я бы сделал это в вашем конструкторе IConfig):
injector.injectInto( fnmInstance );
Если вы пытаетесь внедрить экземпляр FNM (скажем, в его посреднике):
[Inject]
public var view:MyFNMClass;
Если вы пытаетесь подключить посредник к экземпляру FNM, вы делаете что-то вроде этого в своем конструкторе IConfig:
//requires that you map the FNM (assuming you're subclassing it)
mediatorMap.map( MyFNMClass ).toMediator( MyFNMClassMediator );
//else where where you decide to wire it up
mediatorMap.mediate( fnmInstance );
Суть заключается в следующем: не существует очень красивого способа получить доступ к FNM до инъекции. Я схватил это так:
//very nasty I know
var fnm:MyFlexNativeMenu = FlexGlobals.topLevelApplication.myMenu;
код
Сделал git-репо - https://github.com/jusopi/RobotLegs-v2-FlexNativeMenu-example