HTML5 Canvas缩放/缩放更大的2D世界的视图框
HTML5 Canvas scaling/zooming a viewbox of a larger 2D world?
我正在努力学习如何使用画布,这样我就可以在业余时间尝试创建web应用程序和web游戏。我喜欢你可以在页面上画物体的功能。无论如何,我想知道如何让画布变得相当大,然后放大到某一点,然后随着玩家动态移动这个视框。我也想知道如何实现放大和缩小。
我想说的是如何创建一个像http://www.agar.io/这样的2D"世界"
我似乎有问题是,我可以创建画布占用整个页面,但我如何设置它,使画布显示另一个更大的世界的一部分?并且可以像取景器一样在这个更大的世界里动态地移动。
我尝试过谷歌搜索,但在寻找缩放时,大多数事情都与缩放画布为其他设备及其分辨率有关。
目前我将使用HTML5画布,JS &jQuery的画布实验,还有其他的事情我应该知道吗?
谢谢你的帮助。
任何应用程序的'Camera'都只是绘图上下文。假设你有你的:
canvas = document.getElementById("canvas");
context = canvas.getContext("2d");
你可以使用translate()
方法来移动你的视图。
下面是一个JSFiddle来解释相机的移动:https://jsfiddle.net/0o2nsc18/
要移动摄像机,在输出窗口内单击,并使用箭头键移动摄像机。
关于滚动背景,看一下这个教程,它会给你一个如何使用滚动的想法。你可以把它修改成你想要的任何方式,例如,当播放器向上推时,背景会随着播放器的移动而向上移动。
缩放,我相信你正在寻找缩放命令。
var canvas = document.querySelector('canvas');
var ctx = canvas.getContext('2d');
ctx.fillStyle = 'blue';
ctx.fillRect(0, 0, 100, 100);
ctx.scale(x,y);
这样可以直接缩放图像而不是画布。该代码片段将按x缩放图像的宽度和高度。看看这篇文章。
var w = value;
var h = value;
var x = scale;
ctx.drawImage(img, 0, 0, w/x, h/x);
在这里看看一些关于缩放,旋转和其他你可能会发现对制作游戏有用的东西。
相关文章:
- 更改高贴图的缩放级别
- 在不阻止默认行为的情况下检测IE10中的缩放
- 单击超链接时,如何使用Google Maps API v3缩放地图
- 缩放Raphael/SVG容器以适应所有内容
- 传单缩放控制位置错误
- 在不移动内部文本的情况下缩放元素的效果
- 调整缩放窗口高度提升缩放
- 计算CSS3缩放框在另一个框中的最高位置
- D3.JS向rect添加缩放和列表项
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- 将直流图表库中的折线图缩放限制为小时
- 为什么缩放按钮不会显示在照片擦除中
- 动态设置谷歌地图缩放
- 如何缩放像图像一样的元素
- 使用KineticJS变换(移动/缩放/旋转)形状
- 在手机上缩小/缩放滚动图像
- D3.js:缩放时,在2D图形中沿着直线移动圆
- HTML画布中的2D图形和统一缩放
- HTML5 Canvas缩放/缩放更大的2D世界的视图框
- 如何在2D画布中实现缩放功能?