为什么不是全球舞台?

Xir*_*dus 1 global-variables stage actionscript-3

我想知道在每个对象中制作舞台非静态引用的好处是什么,而不是使它全局化.因此,我只有解除引用null的问题.但是,必须有Adobe工作人员这样做的原因.那么,有人可以解释一下这种行为吗?当我使用类似下面代码的东西时,我可以遇到什么问题,并且在我需要的阶段使用gStage?

package
{
    public var gStage: Stage;
    public class Main extends Sprite;
    {
        public function Main()
        {
            if (stage)
                init();
            else
                stage.addEventListener (Event.ADDED_TO_STAGE, init);
        }
        public static function init(): void
        {
            stage.removeEventListener (Event.ADDED_TO_STAGE, init);
            gStage = stage;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,为什么在每个AS3代码示例中我都见过Main扩展Sprite?

Bol*_*ock 5

虽然每个Flash影片通常都有一个可绘制可视显示对象的阶段,但AIR应用程序中不仅有一个"全局"阶段; 每个窗口都有自己的阶段,因此每个窗口对象必须有自己的实例引用到它自己的阶段.在这种情况下制作单个静态全局阶段对象是不对的 - 如果AIR应用程序需要多个窗口,该怎么办?