为什么把鼠标事件改为onmouseover 后就没有效果了
来源:8-2 编程练习
无畏青春
2020-09-21 14:44:06
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>canvas动画</title> <style> * { padding: 0; margin: 0; } canvas { background-color: lightblue; } </style> </head> <body> <canvas width="800px" height="800px" id="canvas">您的浏览器不支持canvas</canvas> <script> var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d"); var posX = 100, posY = 0, dir = 1; var isMouseInRect = false; //判断鼠标是否在生成的方块里面 canvas.onmousemove = function(e) { var mouseX = e.offsetX, mouseY = e.offsetY; if (mouseX > posX && mouseX < posX + 50 && mouseY > posY && mouseY < posY + 50) { isMouseInRect = true; } else { isMouseInRect = false; } } setInterval(function() { if (!isMouseInRect) { //表示当鼠标不在生成的矩形里面时 运行下面的代码 posY += 10 * dir; context.clearRect(0, 0, canvas.width, canvas.height); context.fillStyle = "green"; context.fillRect(posX, posY, 50, 50); if (posY + 50 > canvas.height) { dir = -1; } else if (posY <= 0) { dir = 1; } } }, 100); </script> </body> </html>
1回答
好帮手慕慕子
2020-09-21
同学你好, 因为onmouseover事件在鼠标移入元素的时候触发一次, 之后在元素上移动时不会触发onmouseover事件的。 可以随便打印一个值测试一下,示例:
打印结果就是只有每次移入移入画布的时候打印一次。
onmousemove事件鼠标在元素上移动时会一直触发这个事件, 同学可以自己下去测试一下哦
如果我的回答帮助到了你, 欢迎采纳,祝学习愉快~~~
相似问题