2010-03-10 65 views
0

全屏模式,我在這個Flex應用程序中一直在爭鬥一段時間,而且我在Google搜索結果中短暫地結束了我的困境。我通過Application.application.stage.displayState = StageDisplayState.FULL_SCREEN;進入全屏模式沒有任何問題,但其餘內容只位於原始大小的左上角。將Flex應用程序擴展到全屏的正確方法是什麼?

好吧,我說,我只是做一個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

有時事情出錯,柔性:)

試試下面的辦法

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; 
    } 
} 
相關問題