flash as3在类构造函数之前或类中定义变量?

时间:2011-12-15 07:36:14

标签: flash actionscript-3

之类的区别是什么?
package {
    public class Myclass {
        var txt:TextField = new Textfield();

        function Myclass() {

        }

    }

}

package {

    public class Myclass {

        var txt:TextField;

        function MyClass() {

            txt = new TextField;
        }
    }
}

我知道当你设置创建一个新对象时,会运行类构造函数,如下所示:

var object:Myclass = new Myclass();

在第二种方式中,这将创建新的TextField。

我的困惑是,在第一种方式中,TextField何时被创建?如果我将类导入另一个类,它会为TextField留出内存吗?如果它是一个静态变量呢?

1 个答案:

答案 0 :(得分:6)

在实例化之前不会分配内存,因此在这方面并不重要。

如果你使用一个静态变量,那个变量将占用内存,因为它没有绑定到实例化的对象,而是像该类中的全局变量一样。

编辑:关于如何在评论中最好地构建和初始化对象,从 pkyeck 获得了很好的澄清: 构造函数中的AS3代码中的应该很慢 - 所以最好创建一个init()方法并在那里进行instanciation,并在构造函数中进行所有init()。实时编译器(JIT)未优化构造函数内的代码。要使用JIT优化代码,可以从构造函数中调用函数。然后再次优化该函数内的代码。取自这里:je2050.joa-ebert.com/files/misc/as3opt.pdf - pkyeck