2009-07-02 66 views
8

我想在我的AIR應用上設置scaleMode。這是通過stage.scaleMode設置的。但是,當我嘗試引用階段它返回爲空。我不知道爲什麼?AIR:爲什麼stage == null?

這裏是整個應用程序:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import flash.display.StageDisplayState; 
      private function init():void 
      { 
       var s:Stage = this.stage; //<<-- this.stage == null...why?? 
       s.scaleMode = StageScaleMode.EXACT_FIT; 
      } 
     ]]> 
    </mx:Script> 
</mx:WindowedApplication> 

回答

1

嘗試增加的事件偵聽器Event.ADDED_TO_STAGEaddedToStage MXML屬性。那麼你應該能夠參考舞臺。

0

爲了安全起見,在Web和AIR應用程序,我一般採用applicationComplete事件標誌着啓動週期完成後,我纔去尋找stage對象。從文檔:

創建的所有組件後和 繪製,應用程序對象 調度applicationComplete 事件。這是上次事件 在應用程序 啓動期間調度

如果您等待applicationComplete,您可以確定一切準備就緒。

1

地獄,

您可以用

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication 
     xmlns:mx="http://www.adobe.com/2006/mxml" 
     creationComplete="init()"> 
    <mx:Script> 
     <![CDATA[ 
      import flash.display.StageDisplayState; 
      private function init():void 
      { 
       this.systemManager.stage.scaleMode = StageScaleMode.EXACT_FIT; 
      } 
     ]]> 
    </mx:Script> 
</mx:WindowedApplication> 

:)