AS3:类加载顺序

时间:2010-11-16 22:29:57

标签: actionscript-3 flash avm2

我对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. 中的静态块
  5. 调用构造函数并开始工作。
  6. 有谁知道这是否属实?我想我会在此期间构建一个应用程序来测试它全部:)

1 个答案:

答案 0 :(得分: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