2010-12-22 39 views
0

我有一個AIR應用程序中使用接下來的兩個屬性在一起的問題,我需要展示我的全屏和規模不同的顯示應用程序的一些功能。我的意思是,如果用戶有17「和其他有24」顯示我的應用程序應該保存比例。所以,我開始使用這兩個屬性StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN以和看到內部的畫布(緩衝區)比外部大,請圖片上的冷杉只是StageDisplayState.FULL_SCREEN以與第二StageDisplayState.FULL_SCREEN以和一個StageScaleMode看到。顯示所有。 First PictureAdob​​e AIR應用程序和{StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN以}

Second Picture

你能幫我,說如何解決這個問題呢? 謝謝。

回答

0

我已經開發了我自己重新精整方法,而無需使用SHOW_ALL屬性,但目前它正常工作只能在Windows系統中。

0

StageScaleMode.SHOW_ALL確保始終顯示Flash動畫的全部內容。取決於內容的大小以及放置圖像的位置,這可能會超出屏幕的實際顯示寬度。

如果你希望你的電影總是在屏幕中央,而不是擴展其內容,像這樣做(在點擊全屏):

package 
{ 
    import flash.display.MovieClip; 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageDisplayState; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.events.MouseEvent; 

    public class Test extends MovieClip 
    { 
     private var content : Sprite; 


     public function Test() 
     { 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      stage.align = StageAlign.TOP_LEFT; 
      content = new Sprite(); 
      content.graphics.beginFill(0, 1); 
      content.graphics.drawRect(0, 0, 200, 100); 
      content.graphics.endFill(); 
      addChild(content); 

      stage.addEventListener(Event.RESIZE, onResize); 

      content.addEventListener(MouseEvent.CLICK, onMouseClick); 
     } 

     public function onMouseClick (ev : Event) : void 
     { 
      stage.displayState = StageDisplayState.FULL_SCREEN; 
     } 

     public function onResize (ev : Event) : void 
     { 
      content.x = (stage.stageWidth - content.width) * .5; 
      content.y = (stage.stageHeight - content.height) * .5; 
     } 
    } 
} 

然後所有元素連接到內容雪碧代替階段。

+0

謝謝您的回答,所以,目前我明白爲什麼內容是要大的尺寸,我使用StageScaleMode.SHOW_ALL,接下來的問題是如何使用StageScaleMode.SHOW_ALL內容大小設置爲尺寸的顯示器? – jitm 2010-12-22 13:46:23

0

這裏真正的問題是,除了stage.scaleMode = StageScaleMode.NO_SCALE;什麼也不會報告實際stage.stageWidthstage.stageHeight,而是將返回寬度和高度的撰寫尺寸。