2009-07-06 6 views
1

je les deux projets Flex Builder 3 suivantes:Comment utiliser la balise [mixin] dans les applications AS3?

  • Un projet de bibliothèque AS3 (génère un fichier SWC)

  • Un projet d'application Flex (MXML Application)

L'application MXML fait référence au projet de bibliothèque AS3 (chemin de génération Flex). Jusqu'ici tout va bien. Je veux maintenant exécuter le code automatiquement lorsqu'une application utilise la bibliothèque AS3. La balise [mixin] devrait faire exactement ce dont j'ai besoin.

J'ai suivi les instructions de http://nondocs.blogspot.com/2007/04/metadatamixin.html et j'ai vérifié le projet AutoQuick. Ce dernier est un exemple de projet d'Adobe montrant l'utilisation du cadre d'automatisation. Dans ce projet, ils utilisent la balise [mixin] (classe AQAdapter).

J'ai suivi les exemples mais mon code ne fonctionne pas. La méthode init statique n'est pas appelée. J'ai ajouté la bibliothèque à la liste des arguments du compilateur qui ne fonctionnait pas non plus.

Comment puis-je faire fonctionner ceci?

/* class to be automatically loaded */ 
package { 
    /* includes */ 
    [mixin] 
    public class TestApp extends Sprite { 
     /* additional members */ 


     private static var mContainer:DisplayObjectContainer; 

     private static var mInstance:TestApp; 

     /** 
     * @private  
     */ 
     public static function init(root:DisplayObject):void 
     { 
      if(!mInstance) 
      { 
       mContainer = root as DisplayObjectContainer; 

       mContainer.addEventListener(FlexEvent.APPLICATION_COMPLETE, applicationCompleteHandler); 
      } 
     } 
    } 

} 

Répondre

0

Avec l'étiquette [Mixin], la méthode init() statique sera appelé à l'application de démarrage, tant que la classe est référencée directement ou indirectement de l'application principale. De plus, vous devez vous rappeler que cette méthode est exécutée dans un contexte statique. Vous ne devez donc pas référencer des méthodes ou des attributs nécessitant une instance (non static), sans créer d'abord l'instance.

Lien: http://adamflater.blogspot.com/2007/03/static-code-blocks.html

+1

La balise [mixin] (première lettre est en majuscule!) Doit être utilisé et une référence comme "var test: TestApp;" est suffisant pour appeler le code statique. –

+0

L'option du compilateur -include = ClassName charge quand même la classe, il n'est donc pas nécessaire d'ajouter une référence dans le code. –

Questions connexes