Robotlegsフレームワークを使用していますが、AIRデスクトップアプリケーションで忙しく、FlexNativeMenuを使用したいと考えています。問題は、依存性注入のためにmx.controls.FlexNativeMenuに基づいてビュークラスを作成できないことです。Robotlegsを使用しない場合、コードは非常に単純です-どんな助けでもありがたいです。ありがとう。
2 に答える
通常、ビューには何でも使用できます。問題は、ビューが ADDED_TO_STAGE イベントをディスパッチする場合にのみ、メディエーターの onRegister メソッドが呼び出されることです。また、FlexNativeMenu はこのイベントを発生させないため、メディエーターは機能していません ( http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/FlexNativeMenu.html#eventSummary )
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