AS3 | 1120:未定义属性阶段的访问

Posted

技术标签:

【中文标题】AS3 | 1120:未定义属性阶段的访问【英文标题】:AS3 | 1120: Access of undefined property stage 【发布时间】:2014-06-29 17:20:33 【问题描述】:

我的目标是将矩形创建为具有舞台大小的 MovieClip,但 Flash 给了我这个错误: 1120:未定义属性舞台的访问。 (在第 6,7,14 行)

我的代码:

package 
    import flash.display.MovieClip;

    public class main 
        var mc_background:MovieClip = new MovieClip();
        var stageW:Number = stage.stageWidth;
        var stageH:Number = stage.stageHeight;

        public function main() 
            drawBackground();
        

        public function drawBackground():void 
            mc_background.beginFill(0xFF00CC);
            mc_background.graphics.drawRect(0,0,stageW,stageH);
            mc_background.graphics.endFill();
            stage.addChild(mc_background);
        

    

【问题讨论】:

【参考方案1】:

我有一个类似的问题,问题是,舞台还没有真正设置好,所以你需要等待从中获取数据或里面的东西。只需添加以下内容:

protected function addedToStageHandler(event:Event):void

     //do stuff


protected funcion init():void

    addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
    //more stuff

希望对你有帮助

【讨论】:

这是个好办法。或者,我已成功使用MovieClip(root) 作为访问舞台的另一种方式,假设 MovieClip 的父母之一(无论多远)是舞台。【参考方案2】:

对象的stage 属性在对象被添加到舞台或舞台上的另一个对象之前不会被定义。

在创建类实例时调用类的构造函数,也就是在实例被添加到舞台之前。因此,您无法在从构造函数调用的代码中访问 stage,或者在定义实例变量 stageWstageH 时访问。

要在对象添加到舞台后立即访问舞台属性,请允许对象处理 ADDED_TO_STAGE 事件:

package 
    import flash.display.MovieClip;
    import flash.events.Event;

    public class main
    
        var mc_background:MovieClip = new MovieClip();

        public function main()
        
           addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
        

        private function addedToStageHandler(event:Event):void
        
            // Generally good practice to remove this listener from the object now because it stops addedToStageHandler from being called again if the object is removed and added back to the stage or display list.

            removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);

            drawBackground();
        

        private function drawBackground():void 
            mc_background.beginFill(0xFF00CC);
            mc_background.graphics.drawRect(0,0,stage.stageWidth, stage.stageHeight);
            mc_background.graphics.endFill();
            addChild(mc_background);
        
    

【讨论】:

以上是关于AS3 | 1120:未定义属性阶段的访问的主要内容,如果未能解决你的问题,请参考以下文章

as3 1119: 访问可能未定义的属性 getter/setter

如何修复 1120:在初始化八哥部分时访问未定义的属性 main?

求助如何在 flask 中访问未定义的 url 时重定向到其他页面

在 AS3 中隐藏按钮?

AS3 中的“TypeError:错误 #1010:术语未定义且没有属性”

查找数据时无法读取未定义的属性“查找”