首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Adobe Air -使用Air打开文件

Adobe Air -使用Air打开文件
EN

Stack Overflow用户
提问于 2010-09-03 16:55:35
回答 2查看 1.6K关注 0票数 4

因此,我创建了一个Air应用程序,可以保存为自定义文件类型。我在发布应用程序时设置了文件关联,当您双击文件时,它会打开air应用程序。我通过什么钩子来检测应用程序是否已通过文件打开?显然,我需要检测到这一点,然后让应用程序自己打开文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-03 17:25:36

监听InvokeEvent,它将把所请求的文件名保存在arguments属性中:

快速mxml示例:

代码语言:javascript
复制
<?xml version="1.0"?>
<mx:WindowedApplication
    xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:s="spark.components.*"
    invoke="onAppInvoke(event);">
    <mx:Script><![CDATA[
      import mx.controls.Alert;

      private function onAppInvoke(event:InvokeEvent):void {
        if (event.arguments.length>0) {
           // ok app call with an arguments
           var fileName:String=event.arguments[0];
           Alert.show("app open with : "+fileName);
        } else {
           // app open normally
           Alert.show("normal launch");
        }
      }
     ]]></mx:Script>
</mx:WindowedApplication>
票数 4
EN

Stack Overflow用户

发布于 2010-09-03 17:26:45

侦听WindowedApplication或其nativeApplication上的invoke事件。它有一个arguments数组属性,用于保存在此调用过程中传递的字符串参数。

当调用应用程序时,AIR应用程序的NativeApplication对象

会调度一个invoke事件。

当应用程序启动时,NativeApplication对象总是调度一个调用事件,但也可以在其他时间调度该事件。例如,当用户激活与应用程序相关联的文件时,正在运行的应用程序会调度额外的InvokeEvent

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

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

代码语言:javascript
复制
<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>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3634278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档