【发布时间】:2016-12-19 02:58:04
【问题描述】:
我正在使用 Phaser.js 引擎作为后端用 Javascript 编写一个小游戏。然而,知道这是可能的,屏幕缩放问题已被证明是一个 最困难的一面。
Slither.io 扩展以填满整个屏幕,并保持比例。我也想将其用作我自己的缩放方法,但示例似乎相当稀疏。 我遇到的不是很清楚。
这两个函数是我迄今为止提出的,但它们似乎会导致精灵与窗口比例匹配——而不是保持比例和比例。
function resizeWindow()
{
game.scale.scaleMode = Phaser.ScaleManager.SHOW_ALL;
game.width = window.innerWidth * window.devicePixelRatio;
game.height = window.innerHeight * window.devicePixelRatioz;
gameScale = game.width / game.height;
if (game.height > game.width){
gameScale = (game.height / 300);
} else {
gameScale = (game.width / 480);
}
//game.scale.pageAlignVertically = true;
game.scale.pageAlignHorizontally = true;
game.scale.refresh();
gameScaleManager();
}
function gameScaleManager()
{
for(var i = 0; i < spriteList.length; i++)
{
spriteList[i].scale.setTo(gameScale, gameScale);
}
}
【问题讨论】:
-
除非您为不同的屏幕比例提供自己的图像,否则我认为您无法保持当前图像的比例。
-
但是查看 Scale manager 的文档,我认为有 4 个缩放选项,SHOW_ALL、EXACT_FIT、RESIZE 和 NO_SCALE。
-
考虑到您可以操纵组和对象的比例,这应该是可能的。我主要是想适应屏幕的比例。
-
试试我之前提到的常量。但是为了适应不同的屏幕尺寸,您应该加载游戏代码将使用的不同精灵表。您可以更改以编程方式加载的图形。但你的游戏也应该足够聪明,当屏幕尺寸发生变化时如何处理不同的视觉对象。
标签: javascript phaser-framework