stage报告为空对象
stage对象是所有displayObject的共有属性,引用到舞台对象(即stage)。但很多人会忽略的是,只有displayObject放置到舞台后,displayObject.stage才能指定到舞台,不然stage属性为null,运行时报错。我们用一段代码就容易理解这是为什么:
这是因为我们在实例化mc时flash执行了超类代码,检测到this.stage这个对象,但因为mc还未addChild到舞台,所以stage = null,即为空对象。addChild(mc)还在下一句,因此就报错了。
你可能会说总先实例化才能加入舞台吧,不可能倒过来。没错,这个问题也有解决办法,就是监听加入到舞台的事件:
package{在舞台脚本的第一帐加入
import flash.display.*;
public class mc extends Sprit {
public function mc():void{
super();
stage.displayState=StageDisplayState.FULL_SCREEN;
}
}}
上面,我们将flash设为全屏播放,但刚运行就报错了。import mc;
var mc:mc = new mc();
addChild(mc);
这是因为我们在实例化mc时flash执行了超类代码,检测到this.stage这个对象,但因为mc还未addChild到舞台,所以stage = null,即为空对象。addChild(mc)还在下一句,因此就报错了。
你可能会说总先实例化才能加入舞台吧,不可能倒过来。没错,这个问题也有解决办法,就是监听加入到舞台的事件:
obj.addEventListener(Event.ADDED_TO_STAGE, fun)最后变成:
package{
import flash.display.*;
import flash.events.Event;
public class mc extends Sprit {
public function mc():void{
super();
this.addEventListener(Event.ADDED_TO_STAGE, addToStage);
}
}
private function addToStage():void {
stage.displayState=StageDisplayState.FULL_SCREEN;
}
}