首页 > 解决方案 > Facebook 即时游戏中 Phaser 画布的正确比例是多少

问题描述

根据本教程和这个问题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 });

桌面上的那个:

在此处输入图像描述

移动设备上的相同,但宽度和高度值为:

在此处输入图像描述

标签: facebookphaser-framework

解决方案


您的第一个问题的答案是它实际上取决于所使用的设备。

这就是为什么在您链接到 Emanuele 的教程中使用以下代码的原因:

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 是否有相同的要求。


推荐阅读