2010-09-03 73 views
4

所以我創建了一個保存爲自定義文件類型的Air應用程序。我在發佈應用程序時設置了文件關聯,當您雙擊文件時,它會打開應用程序。檢測應用程序是否已通過文件打開的鉤子是什麼?顯然,我需要檢測這個,然後讓應用程序打開文件本身。Adob​​e Air - 用空氣打開文件

回答

4

InvokeEvent將舉行到請求的arguments屬性的文件名:

快速MXML例如:

<?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> 
+0

謝謝,這正是我一直在尋找的。 – hamishtaplin 2010-09-03 10:00:57

5

請收聽WindowedApplication或其nativeApplicationinvoke事件。它有一個arguments數組屬性,用於存放在此調用期間傳遞的字符串參數。

NativeApplication AIR應用程序的對象在調用應用程序時調度invoke事件。

NativeApplication對象總是在啓動應用程序時調度一個invoke事件,但該事件也可能在其他時間調度。例如,當用戶激活與應用程序關聯的文件時,正在運行的應用程序會分派額外的InvokeEvent

只能啓動特定應用程序的單個實例。隨後嘗試啓動應用程序將導致運行實例的NativeApplication對象分派新的invoke事件。應用程序有責任處理此事件並採取適當的措施,例如打開新的應用程序窗口以在文件中顯示數據。

InvokeEvent對象由NativeApplication對象(NativeApplication.nativeApplication)調度。要接收調用事件,請調用NativeApplication對象的addEventListener()方法。當一個事件監聽器註冊一個調用事件時,它也會收到註冊之前發生的所有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>