开发者

Adobe Air application and {StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN}

I have problem with using next two properties together in one Air application, I need some functionality for show m开发者_如何学JAVAy application in full screen and scale for different displays. I mean , if user has 17" and other has 24" display my app should save proportionals. So, I've start to use these two properties StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN and see that internal canvas (buffer) is bigger than external, please see on the pictures the firs just StageDisplayState.FULL_SCREEN and the second StageDisplayState.FULL_SCREEN and StageScaleMode.SHOW_ALL.

Adobe Air application and {StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN}

Adobe Air application and {StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN}

Could you help me and say How to fix this problem? Thanks.


StageScaleMode.SHOW_ALL ensures the entire content of your Flash Movie is always displayed. Depending on how large your content is, and where you place your images, this might well exceed the actual display width of your screen.

If you want your movie to always center on screen, but not scale its content, do it like this (fullscreen on click):

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;
        }
    }
}

Then attach all your elements to the content Sprite instead of the stage.


I have developed my own approach for re-sizing without using SHOW_ALL property, but currently it correctly works only on the Windows systems.


The real issue here is that anything except stage.scaleMode = StageScaleMode.NO_SCALE; will not report the actual stage.stageWidth and stage.stageHeight, but will instead return the width and height of the authored dimensions.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜