actionscript-3 - AS3无法从定制类访问阶段

标签 actionscript-3 sprite stage

如何从自定义类访问舞台,尤其是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/

相关文章:

c++ - 在 vector 中移动 Sprite

html - 在谷歌音乐网站图像中使用一个图像 Sprite 的目的是什么

javascript - Three.js:远处的物体是微弱的

JavaFX - 如何在同一窗口中打开新阶段?

javascript - 如何使用 id easeljs 获取舞台 child

actionscript-3 - 判断一个 Sprite 是否靠近另一个 Sprite 的更快方法?

flash - 录音开始时AS3的喀哒声

actionscript-3 - 如何在 AS3 中检测 StaticText?

actionscript-3 - 如何以编程方式访问显示对象的所有子对象?

JavaFX 检测舞台屏幕位置的变化