我对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() {
}
}
}
我认为上面的代码将以下列方式执行:
Application
类,因为它是“主要可执行文件”。MyStaticLibrary
和MyWorker
,在其中执行任何静态块。Application
。有谁知道这是否属实?我想我会在此期间构建一个应用程序来测试它全部:)
答案 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