Как правильно масштабировать приложение Flex до полноэкранного режима? - PullRequest
0 голосов
/ 10 марта 2010

Полноэкранный режим, и я какое-то время боролся в этом приложении Flex, и мне не хватает результатов Google, чтобы покончить с трудностями. У меня нет проблем с переходом в полноэкранный режим с помощью Application.application.stage.displayState = StageDisplayState.FULL_SCREEN;, но остальная часть содержимого просто находится в верхнем левом углу в исходном размере.

Хорошо, говорю я, я просто сделаю stage.scaleMode = StageScaleMode.SHOW_ALL и заставлю это выяснить, как это осуществить. И похоже, что так и есть. За исключением того, что при наведении указателя мыши на отдельные флажки и кнопки и различные компоненты они все ерзают незначительно. Небольшой скачок вверх или вниз, когда они изменяют размер ... при наведении мыши на . Ну, это расстраивает, но терпимо. Я всегда могу просто вызвать 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 Ответ

1 голос
/ 10 марта 2010

Иногда что-то не так с 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;
   }
} 
...