0

我有一个关于 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. 调用构造函数并让事情顺利进行。

有谁知道这是真的还是假的?我想我会同时构建一个应用程序来测试它:)

4

1 回答 1

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

于 2010-11-16T23:10:52.447 回答