HTML5 Canvas鼠标与键盘事件

2018-12-20 15:08

http://www.lampbrother.net

演示HTML5 Canvas鼠标事件,获取Canvas对象上的鼠标坐标,演示键盘事件

通过键盘控制Canvas上对象移动。

Canvas对象支持所有的JavaScript的鼠标事件,包括鼠标点击(MouseClick), 鼠标按下

(Mouse Down), 鼠标抬起(Mouse Up),鼠标移动( Mouse Move) 对Canvas添加鼠标事件方式有两种,一种方式是通过API来完成:

// mouse event

canvas.addEventListener(\,doMouseDown,false); canvas.addEventListener('mousemove', doMouseMove,false); canvas.addEventListener('mouseup', doMouseUp, false); 另外一种方式在JavaScript中称为反模式: canvas.onmousedown = function(e){ }

canvas.onmouseup = function(e){ }

canvas.onmousemove = function(e){

http://www.lampbrother.net

}

获取鼠标在Canvas对象上坐标:

由于Canvas上鼠标事件中不能直接获取鼠标在Canvas的坐标,所获取的都是基于整个

屏幕的坐标。所以通过鼠标事件e.pageX与e.pageY来获取鼠标位置,然后通过

Canvas. getBoundingClientRect()来获取Canvas对象相对屏幕的相对位置,通过计算

得到鼠标在Canvas的坐标,代码如下:

function getPointOnCanvas(canvas, x, y) { var bbox =canvas.getBoundingClientRect(); return { x: x- bbox.left *(canvas.width / bbox.width), y:y - bbox.top * (canvas.height / bbox.height) }; }

键盘事件:

HTML5 Canvas本身不支持键盘事件监听与获取,常用的有两种方法来解决这个问题:

http://www.lampbrother.net

一:通过windows对象来实现Canvas键盘事件监听与处理

// key event - use window as object

window.addEventListener('keydown', doKeyDown,true);

二:通过在Canvas对象上添加其它支持键盘事件的DOM元素实现键盘事件支持

// key event - use DOM element asobject

canvas.addEventListener('keydown', doKeyDown,true); canvas.focus();

其中tabindex为HTML5 DOM元素,支持键盘事件。 演示,一个可以根据键盘上下左右移动的矩形块:

http://www.lampbrother.net

一个完整的鼠标与键盘事件演示代码如下:

[javascript] view plain copy

1. var tempContext = null; // global variable 2d context 2. var started = false; 3. var mText_canvas = null; 4. var x = 0, y =0; 5. window.add

6. window.onload = function() {

7. var canvas = document.getElementById(\); 8. console.log(canvas.parentNode.clientWidth); 9. canvas.width = canvas.parentNode.clientWidth; 10. canvas.height = canvas.parentNode.clientHeight;

http://www.lampbrother.net

11.

12. if (!canvas.getContext) {

13. console.log(\

browser.\);

14. return; 15. } 16.

17. // get 2D context of canvas and draw rectangel 18. tempContext = canvas.getContext(\); 19. tempContext.fillStyle=\; 20. x = canvas.width/2; 21. y = canvas.height/2;

22. tempContext.fillRect(x, y, 80, 40); 23.

24. // key event - use DOM element as object

25. canvas.addEventListener('keydown', doKeyDown, true); 26. canvas.focus();

27. // key event - use window as object

28. window.addEventListener('keydown', doKeyDown, true); 29.

30. // mouse event

31. canvas.addEventListener(\, doMouseDown, false); 32. canvas.addEventListener('mousemove', doMouseMove, false); 33. canvas.addEventListener('mouseup', doMouseUp, false); 34. } 35.

36. function getPointOnCanvas(canvas, x, y) {

37. var bbox = canvas.getBoundingClientRect();

38. return { x: x - bbox.left * (canvas.width / bbox.width), 39. y: y - bbox.top * (canvas.height / bbox.height) 40. }; 41. } 42.

43. function doKeyDown(e) {

44. var keyID = e.keyCode ? e.keyCode :e.which;

45. if(keyID === 38 || keyID === 87) { // up arrow and W 46. clearCanvas(); 47. y = y - 10;

48. tempContext.fillRect(x, y, 80, 40); 49. e.preventDefault(); 50. }

51. if(keyID === 39 || keyID === 68) { // right arrow and D 52. clearCanvas(); 53. x = x + 10;


HTML5 Canvas鼠标与键盘事件.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“朱子读书法”对当代大学生的现实意义

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: