将Flex应用程序扩展到全屏的正确方法是什么?

时间:2010-03-10 10:19:37

标签: flex flash actionscript-3 fullscreen

全屏模式,我一直在这个Flex应用程序中争夺一段时间,而我在谷歌搜索结果上的结果是为了结束我的困境。通过执行Application.application.stage.displayState = StageDisplayState.FULL_SCREEN;进入全屏模式没有问题,但其余内容只是位于左上角的原始大小。

好吧,我说,我会做一个stage.scaleMode = StageScaleMode.SHOW_ALL并让弄清楚如何解决这个问题。看起来确实如此。除了当您将鼠标悬停在各个复选框和按钮以及各种组件上时,它们都会轻微地 fidget 。当他们调整大小时,只需稍微向上或向下跳跃...... 鼠标悬停在上。嗯,这令人沮丧,但可以忍受。我总是可以为所有人明确地调用invalidateSize()

但对于组合框。底部的菜单从屏幕底部开始,当我弹出全屏模式时,它们的下降中断了一半。我不知道如何修复那个。有人可以介入这里,让我摆脱痛苦吗?

将Flex应用程序扩展到全屏的正确方法是什么?

var button:Button = button_fullscreen;
try {
    if(stage.displayState == StageDisplayState.FULL_SCREEN) {
        Application.application.stage.displayState = StageDisplayState.NORMAL;
        button.label = "View Fullscreen Mode";
        stage.scaleMode = StageScaleMode.NO_SCALE;
    } else {
        Application.application.stage.displayState = StageDisplayState.FULL_SCREEN;
        button.label = "Exit Fullscreen Mode";
        stage.scaleMode = StageScaleMode.SHOW_ALL;
    }
    invalidateSizes(); // Calls invalidateSize() explicitly on several components.
} catch(error:SecurityError) {
    Alert.show("The security settings of your computer prevent this from being displayed in fullscreen.","Error: "+error.name+" #"+error.errorID);
} catch(error:Error) {
    Alert.show(error.message,error.name+" #"+error.errorID);
}

1 个答案:

答案 0 :(得分:1)

有时flex会出问题:)

尝试以下方法

stage.align = StageAlign.TOP_LEFT;

然后在调整大小或添加到舞台时手动设置缩放

private function updateScaling():void
{
   if(stage.stageWidth != width || stage.stageHeight != height)
   {
       var scaling:Number = 1;
       if(width>height)
       {
          scaling = stage.stageWidth / width;
       }
       else
       {
         scaling = stage.stageHeight / height;
       }

       scaleX = scaleY = scaling;
   }
}