4

考虑这个简单的 AS3 类。

package
{
     import flash.display.Sprite;
     import flash.display.MovieClip;

     public class MySprite extends Sprite
     {
         private var someMC:MovieClip = new MovieClip();

         public function MySprite()
         {
              super();

              addChild(someMC);
         }
     }
}

和这个:

package
{
     import flash.display.Sprite;
     import flash.display.MovieClip;

     public class MySprite extends Sprite
     {
         private var someMC:MovieClip;

         public function MySprite()
         {
              super();

              someMC = new MovieClip();
              addChild(someMC);
         }
     }
}

这是同一件事,还是还有更多?

我猜是因为在第一个示例中,MovieClip 似乎在调用构造函数之前就存在(何时发生,有什么好处?)。

4

2 回答 2

4

全部都是一样。编译器将您的第一个示例转换为第二个示例。唯一的区别是您可以在将赋值放入构造函数时控制实例化顺序。

于 2012-07-03T08:42:34.627 回答
0

Actionscript是一种相当高级的语言,只要你不讨厌它的垃圾收集,它就会对你可以扔给它的大多数东西感到非常冷淡。话虽如此,即使是较低级别的语言也往往不在乎您使用哪种方式,因此这实际上归结为样式问题。

就个人而言,我尝试只初始化我想要调整初始值的常量和变量,它们通常位于构造函数之上;这样他们就很容易被发现和改变,而不是被一大堆new这样()那样的东西弄糊涂了。

于 2012-07-03T08:47:39.007 回答