Adobe Air - 用空气打开文件

ham*_*lin 4 apache-flex air flash actionscript-3

所以我创建了一个Air应用程序,可以保存为自定义文件类型.我在发布应用程序时设置了文件关联,当您双击该文件时,它会打开空中应用程序.有什么钩子可以检测到应用程序是通过文件打开的?显然,我需要检测到这一点,然后让应用程序打开文件本身.

Ama*_*osh 5

invokeWindowedApplication或其nativeApplication上侦听事件.它有一个arguments数组属性,用于保存在此​​调用期间传递的字符串参数.

调用应用程序时,NativeApplicationAIR应用程序的对象将调度invoke事件.

NativeApplication对象始终调度时,应用程序启动invoke事件,但该事件也可以在其他时间调度好.例如,正在运行的应用程序InvokeEvent在用户激活与应用程序关联的文件时调度附加内容.

只能启动特定应用程序的单个实例.启动应用程序的后续尝试将导致NativeApplication正在运行的实例的对象调度的新调用事件.应用程序负责处理此事件并采取适当的操作,例如打开新的应用程序窗口以在文件中显示数据.

InvokeEventNativeApplicationobject(NativeApplication.nativeApplication)调度对象.要接收调用事件,请调用addEventListener()NativeApplication对象的方法.当事件侦听器注册调用事件时,它还将接收invoke注册前发生的所有事件.在调用addEventListener()返回之后调度这些早期事件,但不一定在注册后可能调度的新调用事件之前调度.因此,您不应该依赖派遣订单.

<mx:WindowedApplication creationComplete="init()">
  <mx:Script>
  <![CDATA[
     public function init():void
     {
          NativeApplication.nativeApplication.addEventListener(InvokeEvent.Invoke, onInvoke);
     }
     public function onInvoke(e:InvokeEvent):void
     {
          var args:Array = e.arguments;
          trace("There are " + args.length + " arguments");
          for(var i:int = 0; i < args.length; i++)
          {
               trace("Argument #" + i + " " + args[i]);
          }
     }
  ]]>
  </mx:Script>
</mx:WindowedApplication>
Run Code Online (Sandbox Code Playgroud)