Приложение Adobe Air и {StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN} - PullRequest
0 голосов
/ 22 декабря 2010

У меня проблема с использованием следующих двух свойств вместе в одном приложении Air, мне нужны некоторые функции для отображения моего приложения в полноэкранном режиме и в масштабе для разных дисплеев.Я имею в виду, что если у пользователя 17 ", а у другого 24", мое приложение должно сохранить пропорциональные значения.Итак, я начал использовать эти два свойства StageScaleMode.SHOW_ALL StageDisplayState.FULL_SCREEN и вижу, что внутренний холст (буфер) больше внешнего, пожалуйста, посмотрите на изображениях только StageDisplayState.FULL_SCREEN и второй StageDisplayState.FULL_SCREode и StageScale.ПОКАЗАТЬ ВСЕ.First Picture

Second Picture

Не могли бы вы мне помочь и сказать, как решить эту проблему?Спасибо.

Ответы [ 3 ]

0 голосов
/ 11 января 2011

Я разработал собственный подход к изменению размера без использования свойства SHOW_ALL, но в настоящее время он корректно работает только в системах Windows.

0 голосов
/ 01 февраля 2013

Настоящая проблема здесь в том, что все, кроме stage.scaleMode = StageScaleMode.NO_SCALE;, не будет сообщать о фактических stage.stageWidth и stage.stageHeight, но вместо этого будет возвращать ширину и высоту , созданных размеры.

0 голосов
/ 22 декабря 2010

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

Затем прикрепите все свои элементы к контенту Sprite вместо сцены.

...