2010-11-16 54 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