2009-07-06 8 views
1

Ich habe die folgenden zwei Projekte in Flex Builder 3:Wie wird das [Mixin] -Tag in AS3-Anwendungen verwendet?

  • One AS3 Bibliotheksprojekt (erzeugt eine SWC-Datei)

  • Ein Flex-Anwendungsprojekt (MXML Anwendung)

Die MXML-Anwendung verweist auf das AS3-Bibliotheksprojekt (Flex-Erstellungspfad). So weit, ist es gut. Ich möchte jetzt Code automatisch ausführen, wenn eine Anwendung die AS3-Bibliothek verwendet. Das [Mixin] -Tag sollte genau das tun, was ich brauche.

Ich folgte den Anweisungen von http://nondocs.blogspot.com/2007/04/metadatamixin.html und checkte das AutoQuick-Projekt aus. Letzteres ist ein Beispielprojekt von Adobe, das die Verwendung des Automatisierungsframeworks zeigt. In diesem Projekt verwenden sie das [Mixin] -Tag (Klasse AQAdapter).

Ich folgte den Beispielen, aber mein Code funktioniert nicht. Die statische init-Methode wird nicht aufgerufen. Ich habe die Bibliothek der Liste der Compiler-Argumente hinzugefügt, die auch nicht funktioniert hat.

Wie bekomme ich das zur Arbeit?

/* 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); 
      } 
     } 
    } 

} 

Antwort

0

Mit dem [Mixin] Tag, die statische init() Methode wird bei Anwendung Start-up aufgerufen werden, solange die Klasse direkt verwiesen wird, oder indirekt aus der Hauptanwendung.

Außerdem müssen Sie daran denken, dass diese Methode in einem statischen Kontext ausgeführt wird. Daher sollten Sie keine Methoden oder Attribute referenzieren, die eine Instanz benötigen (nicht static), ohne zuerst die Instanz zu erstellen.

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

+1

Der Tag [Mixin] (erster Buchstabe ist Großbuchstaben!) Verwendet werden muss, und eine Referenz wie "var test: TestApp;" ist ausreichend, um den statischen Code aufzurufen. –

+0

Die Compileroption -include = ClassName lädt die Klasse trotzdem, daher ist es nicht erforderlich, einen Verweis im Code hinzuzufügen. –

Verwandte Themen