首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放画布元素的坐标

缩放画布元素的坐标
EN

Stack Overflow用户
提问于 2012-02-16 04:11:42
回答 2查看 4.6K关注 0票数 2

我已经使用了一个搜索引擎,但是我没有得到我想要的信息,所以我想问一下,是否有人有在HTML5画布元素中使用自制坐标系的好方法/技巧。

我想使用canvas元素在HTML5中开发一个2D游戏,它应该适应整个浏览器窗口,如下所示:

代码语言:javascript
复制
<canvas style="width: 100%; height: 100%;">
     No support for your browser, unfortunately...
</canvas>

问题是,我不知道我应该如何管理我的游戏坐标。例如,在我的游戏中,当用户按向右箭头键时,玩家立即向右移动32px,但如果我调整画布元素的大小,会发生什么?从逻辑上讲,游戏的“块”也会改变它们的大小,因此坐标的单位将不再是像素。

有没有其他我可以使用的单元,或者你建议我怎么做?

EN

回答 2

Stack Overflow用户

发布于 2012-02-16 04:23:53

将画布宽度和高度属性设置为游戏区域大小

代码语言:javascript
复制
<canvas id="mycanvas" width="400" height="300"/>

并将其样式设置为屏幕上所需的显示大小。

代码语言:javascript
复制
#mycanvas {
    width: 100%
    height: 100%
    display: block
}

现在,您可以在代码中始终假设画布是400x300,并且在绘制时忽略屏幕上的实际物理像素大小。

您需要缩放鼠标点击以对应于游戏坐标上的实际位置。所以如果你在(x,y)的画布上点击鼠标,你可以通过x=(x/ $('#mycanvas').width()) * 400和y得到游戏坐标上的位置。如果canvas不是全屏的,可以使用$('#mycanvas').offset()来获取点击坐标的增量。

票数 6
EN

Stack Overflow用户

发布于 2012-02-16 04:36:49

永远不要在画布上使用CSS大小,它们会让事情变得非常丑陋。

您所写的内容并没有使画布达到页面的宽度,它使画布的宽度为300像素,高度为150像素(默认设置),然后将其扭曲,直到达到页面的宽度和高度。

坚持使用Canvas拥有的宽度和高度属性,而不是使用CSS。

如果您希望使其与页面的大小相同,则还有其他选择,例如将画布放入div.style.clientWidth中,然后使canvas.width等于div。

要使用不同的(全屏或非全屏)窗口大小,请参阅我的答案,这里是关于“模型坐标”的:Working with canvas in different screen sizes

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9300590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档