2010-11-16 81 views
0

我有一個關於AS3中的靜態塊的快速問題。AS3:類加載命令

我有一個庫需要在執行任何應用程序邏輯之前進行靜態初始化。如果我插入一個像下面這樣的靜態代碼塊,這是否真的會在其他所有內容之前執行? (即:是安全的假設,一切都會在應用程序啓動之前設置?)

package { 

    import com.tkassembled.library.MyStaticLibrary; 
    import com.tkassembled.library.MyWorker; 

    import flash.display.Sprite; 

    public class Application extends Sprite { 

     // begin static code 
     /* initialize */ { 
      MyStaticLibrary.worker = new MyWorker(); 
     } 

     public function Application() { 

     } 
    } 
} 

我會認爲上面的代碼將在下面的方式執行:

  1. 負載Application類,因爲它是'主要可執行文件'。
  2. 加載MyStaticLibraryMyWorker,執行它們中的任何靜態塊。
  3. 執行Application中的靜態塊。
  4. 調用構造函數並讓事情繼續下去。

有誰知道這是真的還是不是?我想我會構建一個應用程序來測試這一切在此期間:)

回答

1

難道功課,這裏是執行順序:

[16] Application static block executed. 
[16] MyLibrary static blocks invoked. 
[16] MyWorker static blocks 
[16] MyWorker constructor called. 
[16] MyLibrary.worker set. 
[17] Application constructor executed. 

它確實有助於瞭解如何工作:)

你可以在這裏得到我的實驗文件:http://bit.ly/aKwqp6