Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动缩放Phaser 3游戏动态执行中_Javascript_Html_Css_Phaser Framework - Fatal编程技术网

Javascript 自动缩放Phaser 3游戏动态执行中

Javascript 自动缩放Phaser 3游戏动态执行中,javascript,html,css,phaser-framework,Javascript,Html,Css,Phaser Framework,我想知道是否有一种方法可以用设定的分辨率开发我的游戏,例如: width: 1000, height: 600, 然后让HTML或Phaser在窗口大小改变时自动缩放画布元素 我试过使用这个: width: window.innerWidth / 2, height: window.innerHeight / 2, 但这不会保留纵横比,不能正确缩放精灵/图像,需要重新加载页面进行调整,这意味着我无法使用特定的x/y坐标 我已经研究了Phaser 3的缩放管理器和弹性盒,但它们似乎没有改变画布

我想知道是否有一种方法可以用设定的分辨率开发我的游戏,例如:

width: 1000,
height: 600,
然后让HTML或Phaser在窗口大小改变时自动缩放画布元素

我试过使用这个:

width: window.innerWidth / 2,
height: window.innerHeight / 2,
但这不会保留纵横比,不能正确缩放精灵/图像,需要重新加载页面进行调整,这意味着我无法使用特定的x/y坐标

我已经研究了Phaser 3的缩放管理器和弹性盒,但它们似乎没有改变画布的大小

试试这个:


它允许您将css调整到视口。

我能找到的最简单的解决方案是:

首先,添加以下CSS样式规则: html,正文{ 身高:100%; } 身体{ 保证金:0; 填充:0; 背景:111人; 颜色:eee; 字体:标题; } 帆布{ /*请参阅JS中的postBoot*/ 宽度:100%; 身高:100%; 对象匹配:包含; /* */ } 版本{ 位置:绝对位置; 左:5px; 顶部:605px; } 其次,在config对象中添加回调函数以覆盖Phaser的默认样式,如下所示: 我找到了代码示例

编辑:

如果希望在执行过程中更改窗口时调整游戏大小,可以在更新循环中执行类似的功能,如下所示:

function update(){
    (function() {
        const gameId = document.getElementById("game"); // Target div that wraps the phaser game
        gameId.style.width = '100%'; // set width to 100%
        gameId.style.height = '100%'; // set height to 100%
    })(); // run function
}

你能为它生成一个虚拟和工作小提琴吗?你是如何尝试使用ScaleManager的?它应该调整画布的大小。这个解决方案的问题是,我所有的精灵都不会被缩放,只有画布。我正在寻找一种可以根据屏幕大小来缩放整个游戏的东西,比如一个灵活的盒子,它不会改变Phaser对游戏宽度和高度的解释。你能把它添加到你的html头上,看看它能做什么吗?页面加载时,屏幕处于正常大小。当我缩小页面时,它仍保持正常大小。现在扩展图像会使其吞噬整个页面宽度。对不起,我不知道任何可以帮助您的方法。没问题,谢谢您的尝试。谢谢Manuel,这与我要找的非常接近。通过将你的函数添加到我的更新循环中,我做了一点修改。这样,即使在执行期间,只要更改窗口,它也会调整大小。
function update(){
    (function() {
        const gameId = document.getElementById("game"); // Target div that wraps the phaser game
        gameId.style.width = '100%'; // set width to 100%
        gameId.style.height = '100%'; // set height to 100%
    })(); // run function
}