如何根据屏幕大小正确调整画布大小?Javascript(p5.js)
因此,正如问题所说,我需要根据屏幕大小调整画布的大小。然而,事实并非如此。我还需要按比例更新鼠标坐标。似乎我犯了一个致命的错误,从一开始就没有考虑屏幕大小,因为这是我第一个真正的游戏。我根据我的1080p屏幕制作了这个游戏。定位东西和检查鼠标坐标等都基于1920x1080画布。请帮忙 Github链接:如何根据屏幕大小正确调整画布大小?Javascript(p5.js),javascript,canvas,resize,p5.js,mouse-coordinates,Javascript,Canvas,Resize,P5.js,Mouse Coordinates,因此,正如问题所说,我需要根据屏幕大小调整画布的大小。然而,事实并非如此。我还需要按比例更新鼠标坐标。似乎我犯了一个致命的错误,从一开始就没有考虑屏幕大小,因为这是我第一个真正的游戏。我根据我的1080p屏幕制作了这个游戏。定位东西和检查鼠标坐标等都基于1920x1080画布。请帮忙 Github链接: 主游戏,可以运行,但大小取决于您的屏幕: 所有文件(如果您想通过下载查看,则仅为15MB): sketch.js(与此相关的主要文件): 主要是在sketch.js中,第260-263行中的函数
函数设置()中的一些createCanvas行,未注释的是createCanvas(19201080)代码>因为这是我的工作。在行302-314上有一组camera.zoom行,未注释的是camera.zoom=1代码>因为在我的屏幕上,主菜单不需要缩放
第352行之后是一些关于知道玩家点击的位置的代码,问题是这样的。我确实知道如何使用windowWidth
&windowHeight
使画布的内容在所有屏幕上看起来都正确调整大小,但问题的原因是鼠标坐标不正确。如果有人能帮忙,那就太好了
如果你这边的游戏有问题,这里有一个关于游戏菜单工作原理的第二个视频,尽管它非常简单:我自己解决了。对于一些值,如测试ifmouseX>=720
时,我必须将其编辑为mouseX>=785*windowWidth/1920
对于我使用的一个翻译,translate(95525)
,我必须再修改一点,这是一个正确工作的翻译(displayWidth/2-865*(windowWidth)/1920,displayHeight/2-15*(windowHeight)/1080)代码>
至于调整屏幕大小,这很好:
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
if(windowHeight > windowWidth){
factor = windowHeight;
factdiv = 1080;
}else{
factor = windowWidth;
factdiv = 1920;
}
}
为了找到一个像样的解决办法,我不得不把这些东西弄得乱七八糟
画布尺寸,即1920、1080
窗宽、窗高
还有显示宽度、显示高度
我还更新了存储库中的相同内容,以便您可以从这里看到最终结果:我自己找到了答案。对于一些值,如测试ifmouseX>=720
时,我必须将其编辑为mouseX>=785*windowWidth/1920
对于我使用的一个翻译,translate(95525)
,我必须再修改一点,这是一个正确工作的翻译(displayWidth/2-865*(windowWidth)/1920,displayHeight/2-15*(windowHeight)/1080)代码>
至于调整屏幕大小,这很好:
function windowResized() {
resizeCanvas(windowWidth, windowHeight);
if(windowHeight > windowWidth){
factor = windowHeight;
factdiv = 1080;
}else{
factor = windowWidth;
factdiv = 1920;
}
}
为了找到一个像样的解决办法,我不得不把这些东西弄得乱七八糟
画布尺寸,即1920、1080
窗宽、窗高
还有显示宽度、显示高度
我还更新了存储库中的相同内容,以便您可以从这里看到最终结果:恐怕没有简单的解决方法。。。您必须重构您的代码,以便在需要时按比例进行更新resizing@HelderSepulveda这就是它看起来的样子。。。但我很确定,如果我喜欢,也许用鼠标坐标乘以某个值,它会正常工作,但我想不出类似的东西。如果你能说出那样的话,那就太有帮助了。比如乘以windowWidth/1920或者类似的东西,但我就是想不出来鼠标坐标只是冰山一角,到处都是硬编码的值:@HelderSepulveda实际上很多值会保持原样,所以如果我能处理鼠标坐标就足够了。我也测试了主游戏,除了一些文本对齐之外,它运行得非常好,可能会以类似于鼠标坐标的方式得到修复。发布你的答案,这样其他人可能会发现它。恐怕没有简单的修复方法。。。您必须重构您的代码,以便在需要时按比例进行更新resizing@HelderSepulveda这就是它看起来的样子。。。但我很确定,如果我喜欢,也许用鼠标坐标乘以某个值,它会正常工作,但我想不出类似的东西。如果你能说出那样的话,那就太有帮助了。比如乘以windowWidth/1920或者类似的东西,但我就是想不出来鼠标坐标只是冰山一角,到处都是硬编码的值:@HelderSepulveda实际上很多值会保持原样,所以如果我能处理鼠标坐标就足够了。我也测试了主游戏,除了一些文本对齐之外,它工作得非常好,这可能会以类似于鼠标坐标的方式得到修复。发布你的答案,以便其他人可以找到它