2009-07-02 96 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> 

:)