在keydown(JS,Jquery)上更改HTML5 Canvas元素
Altering HTML5 Canvas element on keydown (JS, Jquery)
按下左键时,我正试图在画布上移动一些东西。
$(document).ready(function () {
var ctx = document.getElementById('canvas').getContext('2d');
var img = new Image();
img.onload = function(){
ctx.drawImage(img,0,0); // draw the image at the right coords
ctx.drawImage(img,110,110); // draw the image at the right coords
ctx.save();
};
img.src = 'tiles/processed/1_grass.png'; // Set source path
function draw() {
ctx.translate(20,0);
};
draw();
draw();
draw();
$(document).keydown(function(e) {
if (e.keyCode == 37) {
draw();
};
});
});
现在,它出现了三个draw();'s工作,但函数内部的那个不工作。
我是完全错过了画布的概念(因为它本质上是静态的,必须一直重新绘制),还是我做错了什么?
(附言:我也在使用Jquery)
干杯!
您实际上从未重新绘制画布。绘制一次(img.onload
),否则仅平移画布。
draw
函数应该清除画布并重新绘制图像。
这里有一个简单的例子,基于您的代码:
$(function () {
var ctx = document.getElementById('canvas').getContext('2d');
function draw() {
ctx.save();
ctx.setTransform(1, 0, 0, 1, 0, 0);
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.restore();
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, 20, 20);
};
draw();
$(document).keydown(function(evt) {
switch(evt.keyCode) {
case 37:
ctx.translate(-5, 0);
break;
case 38:
ctx.translate(0, -5);
break;
case 39:
ctx.translate(5, 0);
break;
case 40:
ctx.translate(0, 5);
break;
}
draw();
});
});
演示:http://jsfiddle.net/Vx2kQ/
不过,就我个人而言,我不会使用translate
来处理这个动作。我会使用一些x/y坐标,存储在一个私有变量中。按下键后,我会操纵这些坐标并重新绘制。
相关文章:
- IE9的HTML5 Canvas getImageData()函数存在问题
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- HTML5 Canvas访问控制允许原始错误
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- 如何在MVC5中运行时在HTML5 Canvas中显示图像
- HTML5 Canvas无法加载Kinetic.js
- 构建HTML5 Canvas/JS游戏
- HTML5 Canvas+js游戏|死亡时重置游戏更改游戏速度
- HTML5 Canvas undo是'在IE或Firefox中无法正常工作
- 在Javascript HTML5+Canvas中处理精灵鼠标点击的最佳方式
- html5 canvas toDataURL 返回空白图像
- HTML5 Canvas 的初学者,使用图层
- HTML5 Canvas drawImage ratio bug iOS
- html5 Canvas getImageData 或 toDataURL 的结果 - 占用更多内存
- HTML5 Canvas - 磨砺到停顿
- HTML5 Canvas - 使用命令数组通过上下文进行绘制
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- Html5 Canvas Javascript使我的网页链接没有响应
- Drawing asymmetrical ellipses in HTML5 Canvas using js?