更新:找到一些nice info on AVM2。我没有花太多时间用它,但它肯定涵盖了$ init和$ cinit(以及$ iinit,还有很多其他东西)。如果我在其他人提出问题之前得到了很好的答案,我会发布对这个问题的回复。
今天已经进入了一个关于链接跳跃和谷歌搜索的长线程,但仍然没有太多掌握$ cinit和$ init的内容。
我关心因为我今天了解到$ cinit和$ init被解释(如果我理解的话,由FP解释),而其他一切都被编译。
我认为 $ init引用给定类的构造函数,$ cinit引用创建类的对象的构造函数。 ......那样......
任何人都可以让我直截了当,或者至少指出我有用的方向吗?
感谢。
答案 0 :(得分:1)
这是一个老问题,但我知道答案,我会在这里发布。
$cinit
是在需要使用类之前调用的方法。它初始化所有静态成员并运行静态初始化程序中的任何代码。把它想象成类拥有的构造函数。例如,如果您在AS3中有以下类:
public class SomeClass extends Object {
static private const SOME_STATIC_VAR = 4;
....
}
然后$cinit
方法将在该类被使用或甚至被引用之前运行,并且它将初始化SOME_STATIC_VAR
的内存并将其值设置为4.
$init
是类实例初始值设定项。它基本上是类构造函数。例如:
public function SomeClass() {
super();
return;
}
希望你有足够的细节!
答案 1 :(得分:0)
$cinit
是在第一次使用类时构造所有静态变量。