Сброс масштаба в Phaser

У меня есть игра, сделанная в фазере, и мы пытаемся добавить к ней полноэкранный режим. Когда я звоню просто

this.game.scale.startFullScreen(false);

он сохраняет игры maxHeight и maxWidth, поскольку они установлены в предварительной загрузке, поэтому он показывает черный полный экран с центром игры, поэтому я создал для него оболочку, которая работает, но не тогда, когда пользователь нажимает escape, в отличие от кнопка «Выйти из полноэкранного режима». Начальная оболочка устанавливает для maxWidth и maxHeight значение null, что затем разрешает полный полноэкранный режим, а стоп-оболочка возвращает им значения по умолчанию, и когда вы нажимаете кнопку «выйти из полноэкранного режима», она работает нормально, но когда я нажимаю ее, вызывает мою функцию, но не сбрасывает экран, поэтому он выходит из полноэкранного режима браузера, но по-прежнему выше, чем окно браузера.

Вот мой полный код:

var startFullscreen = function() {
    // remove maxwith and maxheight
    game.scale.maxWidth = null;
    game.scale.maxHeight = null;

    // set to fullscreen
    game.scale.startFullScreen(false);
}

var stopFullscreen = function() {
    // reset maxWidth and maxHeight
    game.scale.maxWidth = 1000;
    game.scale.maxHeight = 600;

    // turn off fullscreen
    if (game.scale.isFullScreen) { // if the user hit escape, fullscreen is already exited and we only need to reset the scale
        game.scale.stopFullScreen();
    } else {
        // what goes here?
    }
}

$(document).keyup(function (e) {
    if (e.keyCode == 27) { // escape key maps to keycode `27`
        stopFullscreen();
    }
});

Любая помощь приветствуется. Заранее спасибо!


person Timothy    schedule 22.01.2016    source источник
comment
пробовали ли вы это: phaser.io/docs/2.4.4/Phaser .ScaleManager.html # refresh?   -  person jolmos    schedule 25.01.2016


Ответы (1)


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

var startFullscreen = function() {
    // remove maxwith and maxheight
    game.scale.maxWidth = null;
    game.scale.maxHeight = null;

    // set to fullscreen
    game.scale.startFullScreen(false);

    setTimeout(function () {
        // resets height and width so the game will render correctly when fullscreen exits
        game.scale.maxWidth = 1000;
        game.scale.maxHeight = 600;
    }, 500);
}
person Timothy    schedule 22.01.2016