2

applicationComplete発生する 前にコマンドライン引数を取得したいと思いますapplicationComplete="init()。でこれらinit()のコマンド ライン引数を使用したいのですが、 のonInvoke後に発生しているようinit()です。現在、私は次の順序でonInvoke とを持っています。applicationCompletemain.mxml

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                   xmlns:s="library://ns.adobe.com/flex/spark" 
                   xmlns:mx="library://ns.adobe.com/flex/mx"
                   xmlns:noxaos="com.someplace.*"
                   xmlns:skins="skins.*"
                   invoke="onInvoke(event)"
                   applicationComplete="init()"
                   width="400"
                   height="600">
4

1 に答える 1

1

プロパティの順序を変更しても実行順序を変更することはできません。

実際には、invokeイベントは通常、イベントの前にトリガーされますが、ウィンドウがステージに追加されるまで、クラスはそれをキューに入れます。applicationCompleteWindowedApplication

早い段階でイベントに応答する必要がある場合はinvoke、ディスパッチ オブジェクト (クラス) を直接サブスクライブする必要がありますNativeApplication

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/desktop/NativeApplication.html#event:invoke

NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, invokeHandler);

ただし、イベントがより早くディスパッチされるという保証はありません。そのinvokeため、競合状態の可能性を回避するために、invokeディスパッチされた後にのみさらに処理する必要があります。

たとえばinvoke、ハンドラーでイベントを直接サブスクライブし、applicationCompleteそこからすべてのものをハンドラーに移動することで、これを管理できますinvokeinvokeイベントはキューに入れられており、サブスクライブした直後に発生するため、これは正常に機能するはずです。

于 2013-07-28T20:14:17.470 に答える