Каковы правильные пропорции холста Phaser в мгновенных играх Facebook - PullRequest
0 голосов
/ 13 мая 2018

Согласно этому руководству и этому вопросу https://stackoverflow.com/a/50300726/2107253 Я использую window.innerWidth и window.innerHeight, чтобы определить область в моей игре Phaser 2 CE.

Но когда я отображаю пропорции своего холста на рабочем столе и на мобильном устройстве, есть две разные пары значений, какие правильные значения я должен использовать в инструкции new Phaser(...), и нужно ли мне использовать SHOW_ALL или другое значение масштаба для масштабирования игры как на настольном компьютере, так и на мобильном?

var game = new Phaser.Game(window.innerWidth, window.innerHeigh, Phaser.AUTO, 'game', { preload: preload, create: create, update: update });

Тот, что на рабочем столе ниже:

enter image description here

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

enter image description here

1 Ответ

0 голосов
/ 16 июля 2018

Ответ на ваш первый вопрос: он действительно зависит от используемого устройства.

Вот почему в учебнике, который вы связали с Эмануэле, используется следующий код:

var windowWidth = window.innerWidth;
var windowHeight = window.innerHeight;
if (windowWidth > windowHeight) {
    windowWidth = windowHeight / 1.8;
}
var gameWidth = windowWidth * gameOptions.gameHeight / windowHeight;
game = new Phaser.Game(gameWidth, gameOptions.gameHeight, Phaser.CANVAS);

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

Чтобы ответить на второй вопрос, да, обычно используется Phaser.ScaleManager.SHOW_ALL, если вы хотите, чтобы ваша игра занимала весь экран. Из того, что я понимаю, некоторые платформы, такие как iOS, «требуют», чтобы для прохождения обзора не было черных полос, но я не знаю, есть ли в Facebook Instant Games такое же требование.

...