如何从自定义类访问舞台,尤其是Flash Movie的宽度和鼠标位置?
package classes
{
import flash.events.*;
import flash.display.*;
public class TableManager extends Sprite
{
public function TableManager() {
sayStage();
}
public function sayStage():void
{
trace(stage);
}
}
}
这只会返回nill。我知道DisplayObjects在启动之前没有任何阶段,因此您无法在构造函数中访问该阶段,但是即使稍后我将sayStage()作为实例方法调用,它也不起作用。
我究竟做错了什么?
最佳答案
如果TableManager在舞台上,则可以使用this.stage
访问舞台。
诀窍是您必须等待实例添加到场景中。您可以监听ADDED_TO_STAGE
事件,以便知道何时发生。
package classes {
import flash.events.*;
import flash.display.*;
public class TableManager extends Sprite {
public function TableManager() {
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(e:Event):void {
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
sayStage();
}
public function sayStage():void {
trace(this.stage);
}
}
}
关于actionscript-3 - AS3无法从定制类访问阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8672183/