stage和addChild一般不能在类中直接使用。出了下面几种情形:
1、在文档类中可以直接使用。所谓文档类,并非真的有文档类这样一种Class,而是在Flash中指定了某一个类作为Flash的启动类。Flash编译器会自动调用该类的构造函数。这有点类似于C语言中的Main函数,所以许多人在编写文档类时,喜欢起名为Main。
2、继承自flash.display.DisplayObject的类的实例,如果被加入到舞台(addChild)后,可以通过属性stage取得所在舞台的实例。
例如:
import flash.text.TextField;
var tf1:TextField = new TextField();
tf1.text = "Text Field 1";
tf1.border = true;
tf1.x = 10;
addChild(tf1);
tf1.width = tf1.stage.stageWidth / 2 - 10;
var tf2:TextField = new TextField();
tf2.text = "Text Field 2";
tf2.border = true;
tf2.x = tf1.x + tf1.width + 5;
addChild(tf2);
tf2.width = tf2.stage.stageWidth / 2 - 10;
trace(stage.stageWidth);
来源:http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html
3、在时间轴上或者文档类中,将stage对象直接传递给方法。这样就可以在方法内直接调用传递进来的stage对象了。
本文首发:剑锋博客 尊重作者,请保留链接。
