2010-12-22 79 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,而是将返回宽度和高度的撰写尺寸。