javascript - 如何关闭 JavaScript 中的 CSS 像素比,以便我可以在手机上创建高清游戏?

标签 javascript css cordova pixel screen-density

我一直在用纯 JavaScript/CSS/HTML 开发游戏,我遇到了一个问题,我的 1920x1080 手机将我的游戏显示为 586x330,像素显示比例为 3。我想知道的是如何让我的游戏在高清屏幕上运行,因为我不想玩低分辨率的游戏,因为它可以是高分辨率的。

当我在网络浏览器(台式机或移动设备)上运行游戏时,像素密度为 1,所以一切正常,当我使用 PhoneGap 作为 Android 应用程序运行它时出现问题。

任何帮助将不胜感激,我很困在这里。

谢谢,

最佳答案

我假设您使用的是 <canvas>元素,因为它是大多数游戏的图形基础。

如果是这种情况,您需要确保只使用其内联 width 来调整它的大小和 height属性。通过内联,我的意思是这些字面意思是嵌入在 html 中:

<canvas width="--your width--" height="--your height--">
</canvas>

您要确保没有其他尺寸被应用于您的 Canvas 。

这些都不是:

/* style.css */
canvas {
    transform: scale(1.5, 1.5);
}

甚至都不是:

/* style.css */
canvas {
    width: 100%;
    height: 100%;
}

问题是 Canvas 必须使用的分辨率像素数由其内联定义widthheight属性。如果你想让你的 Canvas 与你的手机屏幕有相同的分辨率,你需要使用javascript来修改它的width。和 height每当屏幕尺寸改变时:

/* thing.js */
var resizeCanvas = function() {
    var canvasElem = getYourCanvasElement();

    canvasElem.width = getWidthOfScreen();
    canvasElem.height = getHeightOfScreen();
}

// Make sure canvas fits initially...
whenPageLoads(resizeCanvas);

// And then resize it whenever needed
whenScreenSizeChanges(resizeCanvas);

当然我不知道你使用的是什么框架,所以代码只是一个模板。您需要决定如何实现 getYourCanvasElement , getWidthOfScreen , getHeightOfScreen , whenPageLoads , 和 whenScreenSizeChanges .

编辑:可能影响 Canvas 大小的另一件事是浏览器视口(viewport)缩放。对此有很好的洞察力here .

关于javascript - 如何关闭 JavaScript 中的 CSS 像素比,以便我可以在手机上创建高清游戏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41969565/

相关文章:

javascript - 分区 : enlarge and resize back to original on hover out

javascript - 使div高度响应内容

css - 在 React 中从 dangerouslySetInnerHTML 修改 HTML 标签

html - Bootstrap中的 "row"类是什么意思,它和容器的区别,它和col-***-*怎么叠加?

ios - TouchableOpacity 边框半径打破了 Android 上的背景颜色 - React Native

android - phonegap 2.7 android getpicture 错误回调总是被触发

ios - 带有 phonegap 的 Jquery mobile 的样式不适合移动应用程序

javascript - 页面加载时自动单击超链接

javascript - 如何缩放 SVG 路径

android - Phonegap Android SmsSendingPlugin 不返回未发送的短信