Задать вопрос

Phaser.js — как менять размеры игры, чтобы на разных экранах она всегда занимала весь экран?

Что-то не могу нагуглить ничего путного на эту тему. Есть вот такой код:

game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
game.scale.pageAlignHorisontally = true;
game.scale.pageAlignVertically = true;


но он, по сути, просто выравнивает канвас по центру экрана, оставляя поля справа/слева (или сверху/снизу, в зависимости от экрана). А как от этих полей избавиться непонятно.
  • Вопрос задан
  • 2051 просмотр
Подписаться 4 Оценить Комментировать
Решения вопроса 1
@GreatRash Автор вопроса
Короче, раз уж мне никто не отвечает... После 3-х дней поисков я набрёл на решение на StackOverflow:

(function() {
  var targetWidth = 640, // идеальная ширина приложения (под неё рисуем спрайты и т.п.)
        targetHeight = 960, // 640х960 - это iPhone 4, под меньшее разрешение наверно нет смысла делать
            
        deviceRatio = window.innerWidth / window.innerHeight,
        newRatio = (targetHeight / targetWidth) * deviceRatio,
            
        newWidth = targetWidth * newRatio,
        newHeight = targetHeight,
            
        game = new Phaser.Game(newWidth, newHeight, Phaser.CANVAS, ''); // последний аргумент - родитель (если пусто, значит canvas создастся в body)
            
        game.state.add('Boot', Boot);
        game.state.add('Preload', Preload);
        game.state.add('Game', Game);
            
        game.state.start('Boot');
})();

// ... Далее внутри Boot.js пишем

Boot.protoytpe = {
  create: function() {
    this.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
    this.scale.pageAlignHorisontally = true; // можно не выравнивать, но я остаил
    this.scale.pageAlignVertically = true;
    this.scale.forcePortrait = true;
  }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы