Flash actionscript 3初始化()
我经常在AS3类的构造函数中看到init(),有时甚至是构造函数中唯一的代码。如果您可以简单地使用构造函数本身初始化一个类,那么为什么这样做会有用呢Flash actionscript 3初始化(),flash,actionscript-3,Flash,Actionscript 3,我经常在AS3类的构造函数中看到init(),有时甚至是构造函数中唯一的代码。如果您可以简单地使用构造函数本身初始化一个类,那么为什么这样做会有用呢 package { import flash.display.Sprite; public class Example extends Sprite { public function Example() { init();
package
{
import flash.display.Sprite;
public class Example extends Sprite
{
public function Example()
{
init();
}
public function init ( ):void
{
//initialize here
}
}
}
在ActionScript3中,构造函数代码总是被解释而不是编译。我相信将代码移动到init()函数中可以编译和优化它
我这样做的原因是,我可以在不创建新实例的情况下重新初始化类。init()方法基本上是一个“重置”按钮,如果编码正确,它允许您将类返回到初始状态,同时,例如,允许任何已设置的变量保持设置
当然,这取决于您的编码方式。另一个原因可能是您需要对stage或父容器的引用,并且懒得设置添加到stage的侦听器。然后,您应该首先实例化该类,将其添加到容器中,然后在它出现在显示列表上后调用
init()
新加入AS3的程序员经常在引用阶段时遇到问题(众所周知的“它不存在”情况)
通过做…:
public function ClassName()
{
super();
addEventListener( Event.ADDED_TO_STAGE, init, false, 0, true );
}
private function init( event : Event ) : void
{
removeEventListener( Event.ADDED_TO_STAGE, init );
// Reference stage.stageWidth;
// Call init after some sort of load completion initialized in the constructor
}
。。。它很容易修好
或者有时在构造函数中初始化XML加载程序,然后在加载完成时调用initialize函数。实际上,如果有任何重要代码,请将其放入构造函数调用的函数中。