2014-05-12 99 views
4

我的目標是創建矩形作爲具有舞臺大小的MovieClip,但Flash給了我這個錯誤:
1120:訪問未定義的屬性階段。 (上線6,7,14)AS3 | 1120:訪問未定義的屬性階段

我的代碼:

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

沒有定義對象的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); 
     } 
    } 
} 
4

我也有類似的問題,問題是,該階段還沒有真正建立還沒有,所以你需要去等待來自它的數據或其中的東西。只是補充一點:

protected function addedToStageHandler(event:Event):void 
{ 
    //do stuff 
} 

protected funcion init():void 
{ 
    addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); 
    //more stuff 
} 

希望它有助於

+0

這是一個很好的方式。或者,我已成功使用'MovieClip(root)'作爲訪問舞臺的另一種方式,假設MovieClip的父母之一(無論背後多遠)是舞臺。 – CodeMouse92