Scalling FlashPunk игра для полноэкранного режима - PullRequest
1 голос
/ 11 мая 2011

Я делаю Flash-игру с помощью FlashPunk. Когда я нажимаю Ctrl + F, Flash становится полноэкранным, но игра остается с исходным размером, выровненным по верхнему левому углу.

Как мне указать FlashPunk, что я хочу, чтобы игра масштабировалась до размера экрана? (сохраняя пропорции, конечно)

Спасибо

Ответы [ 5 ]

1 голос
/ 16 ноября 2011

Вы можете управлять масштабированием в атрибутах OBJECT, когда вы встраиваете Flash в HTML . Используйте scale=default для масштабирования, чтобы сохранить соотношение сторон. Когда вы запускаете Flash в плеере, используйте пункт меню View-> Show All, который работает так же, как scale=default в OBJECT в HTML.

0 голосов
/ 17 ноября 2011

Взгляните на класс FP во flashpunk.В частности, FP.screen.scale, который позволяет изменить размер всей игры по указанному коэффициенту.Например, приведенный ниже код удвоит размер игрового экрана:

FP.screen.scale = 2;

Если вам нужно беспокоиться о соотношении сторон, вы можете сделать X и Y отдельно с помощью:

FP.screen.scaleY = 2;
FP.screen.scaleX = 3;

После перехода в полноэкранный режим вы можете использовать приведенный ниже код, чтобы получить правильное соотношение сторон для увеличения экрана:

  var scaleFactorX = stage.stageWidth / FP.screen.width;
  var scaleFactorY = stage.stageHeight / FP.screen.height;
  FP.screen.scaleX = scaleFactorX;
  FP.screen.scaleY = scaleFactorY;
0 голосов
/ 11 мая 2011

Вы можете подключиться к событию изменения размера и масштабировать его в коде

//put this in your initialization method

stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.addEventListener(Event.RESIZE, onResize); 
stage.dispatchEvent(new Event(Event.RESIZE));


public function onResize(event:Event=null):void
{       

    width = stage.stageWidth;
    height = stage.stageHeight;

    if (scaleX < scaleY)
        scaleY = scaleX;
    else
        scaleX = scaleY;

}
0 голосов
/ 02 октября 2011

Лучший способ сделать это - переопределить открытую функцию setStageProperties в вашем основном классе (во FlashPunk ваш основной класс должен расширять класс Engine)

override public function setStageProperties():void 
{
    super.setStageProperties();
    stage.scaleMode = StageScaleMode.SHOW_ALL;
}
0 голосов
/ 11 мая 2011

Масштабирование вашего флэш-фильма значительно снизит производительность.Я призываю вас не делать этого по любой причине.Я не уверен, что такое флэш-панк, но попробуйте использовать это:

stage.scaleMode = StageScaleMode.SHOW_ALL;
...