AS3 MXML onInvoke和applicationComplete订单

时间:2013-07-28 00:05:12

标签: actionscript-3 flash flex command-line air

我想在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">

1 个答案:

答案 0 :(得分:1)

您无法通过更改属性顺序来更改执行顺序。

实际上invoke事件通常在 applicationComplete事件之前触发,但WindowedApplication类将其排队,直到窗口被添加到阶段。< / p>

如果您需要在较早阶段响应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事件来管理此操作,并将所有内容从那里移到invoke处理程序中。这应该可以正常工作,因为invoke事件正在排队,并且会在订阅后直接触发。