2009-07-06 49 views
1

我有以下兩個項目在Flex Builder 3:如何在AS3應用程序中使用[mixin]標籤?

  • 一個AS3庫項目(生成SWC文件)

  • 一個Flex應用程序項目(MXML應用)

MXML應用程序引用AS3庫項目(Flex構建路徑)。到現在爲止還挺好。我現在想在應用程序使用AS3庫時自動運行代碼。 [mixin]標籤應該完全符合我的需求。

我按照http://nondocs.blogspot.com/2007/04/metadatamixin.html的指示,檢出了AutoQuick項目。後者是Adobe示例項目,顯示了自動化框架的使用。在這個項目中,他們使用[mixin]標籤(class AQAdapter)。

我跟着例子,但我的代碼不工作。靜態init方法不被調用。我將該庫添加到編譯器參數列表中,該列表也無效。

我如何得到這個工作?

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

} 

回答

0

隨着[Mixin]標籤,靜態init()方法將在應用程序啓動時被調用,只要類是從主應用程序直接或間接引用。另外,您必須記住,此方法在靜態上下文中運行,因此您不應引用需要實例的方法或屬性(非static),而不必先創建實例。

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

+1

標籤[密新](第一個字母是大寫!)必須使用和類似的參考「變種測試:TestApp;」足以調用靜態代碼。 – 2009-07-06 10:02:53

相關問題