2010-09-03 9 views
4

J'ai donc créé une application Air qui enregistre dans un type de fichier personnalisé. J'ai mis en place les associations de fichiers lorsque je publie l'application et, lorsque vous double-cliquez sur le fichier, il ouvre l'application air. Quels sont les hameçons pour moi de détecter que l'application a été ouverte via un fichier? Évidemment, je dois le détecter et ensuite obtenir l'application pour ouvrir le fichier lui-même.Adobe Air - Ouverture d'un fichier avec Air

Répondre

4

Écouter la InvokeEvent qui tiendra dans la propriété arguments le nom de fichier demandé:

rapide exemple 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

Merci, c'est exactement ce que je cherchais. – hamishtaplin

5

Écoutez l'événement invoke sur le WindowedApplication ou son nativeApplication. Il possède une propriété de tableau qui contient les arguments de chaîne transmis lors de cet appel.

L'objet NativeApplication d'une application AIR distribue un événement invoke lorsque l'application est invoquée. L'objet NativeApplication distribue toujours un événement invoke lorsqu'une application est lancée, mais l'événement peut également être distribué à d'autres moments. Par exemple, une application en cours distribue InvokeEvent supplémentaire lorsqu'un utilisateur active un fichier associé à l'application.

Une seule instance d'une application particulière peut être lancée. Les tentatives suivantes de lancement de l'application aboutissent à un nouvel événement invoke distribué par l'objet NativeApplication de l'instance en cours d'exécution. Il est de la responsabilité d'une application de gérer cet événement et de prendre les mesures appropriées, telles que l'ouverture d'une nouvelle fenêtre d'application pour afficher les données dans un fichier.

InvokeEvent objets sont expédiés par l'objet NativeApplication (NativeApplication.nativeApplication). Pour recevoir des événements invoke, appelez la méthode addEventListener() de l'objet NativeApplication. Lorsqu'un écouteur d'événement s'enregistre pour un événement invoke, il reçoit également tous les événements invoke survenus avant l'enregistrement. Ces événements antérieurs sont distribués après l'appel de addEventListener(), mais pas nécessairement avant qu'un nouvel événement d'appel qui pourrait être distribué après l'enregistrement. Ainsi, vous ne devriez pas compter sur l'ordre d'expédition.

<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>