我正在尝试在AIR应用上设置scaleMode。这是通过stage.scaleMode设置的。但是,当我尝试引用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>
答案 0 :(得分:15)
尝试使用windowComplete
代替creationComplete
。也:
[如果]您正在尝试添加 eventListeners来自舞台 你的申请的开始 执行,这只适用于 updateComplete()和 applicationComplete()。
来源:http://www.wietseveenstra.nl/blog/2007/02/understanding-the-flex-application-startup-event-order/
答案 1 :(得分:1)
尝试为Event.ADDED_TO_STAGE
或addedToStage
mxml属性添加事件侦听器。你应该可以参考舞台了。
答案 2 :(得分: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>
应该这样做:)
答案 3 :(得分:0)
为了安全起见,在Web和AIR应用程序中,我通常使用applicationComplete
事件标记启动周期的完成,然后再查找stage
对象。来自文档:
创建所有组件后 绘制,Application对象 调度applicationComplete 事件。这是最后一个事件 在应用程序期间发送 启动。
如果你等待applicationComplete
,你可以确定一切都准备好了。