Javascript 如何在画布上使用鼠标移动函数?

Javascript 如何在画布上使用鼠标移动函数?,javascript,canvas,Javascript,Canvas,如果我在Javascript中编写了一个名为clearCircle的函数,那么如何使clearCircle在鼠标悬停在画布上时随鼠标移动? 我尝试过canvas的onmouseover事件,但这似乎没有多大帮助 clearCircle(context,/*x=*/520,/*y=*/600,/*radius=*/60); function clearCircle(context,x,y,radius) { context.save(); context.beginPath();

如果我在Javascript中编写了一个名为clearCircle的函数,那么如何使clearCircle在鼠标悬停在画布上时随鼠标移动? 我尝试过canvas的onmouseover事件,但这似乎没有多大帮助

  clearCircle(context,/*x=*/520,/*y=*/600,/*radius=*/60);

function clearCircle(context,x,y,radius) {
  context.save();
  context.beginPath();
  context.arc(x, y, radius, 0, 2*Math.PI, true);
  context.clip();
  context.clearRect(x-radius,y-radius,radius*2,radius*2);
  context.restore();
}

如评论中所述,您必须在鼠标移动时作出响应,重新绘制圆。您可以通过创建一个函数来响应,该函数处理画布上的mousemove事件

以下是注释代码和演示:

//画布相关变量 var canvas=document.getElementByIdcanvas; var ctx=canvas.getContext2d; var cw=画布宽度; var ch=画布高度; ctx.线宽=3; //影响鼠标坐标的句柄滚动 功能设置B{ BB=canvas.getBoundingClientRect; BBoffsetX=BB.左; BBoffsetY=BB.top; } var BB、BBoffsetX、BBoffsetY; 挫折b; window.onscroll=function{setBB;} //缓存PI*2,因为它经常使用 var PI2=数学PI*2; //定义圆的中心X、Y、半径和颜色 变量圆={cx:100,cy:100,半径:25,填充:'skyblue',笔划:'white'}; //最初在画布上绘制圆 画 //用于清除/填充画布背景的函数 //并在其当前位置绘制圆,如下所示: //在圆{}对象中定义 函数图{ //如果你想用黑色填充画布 //不需要clearRect…只需使用黑色进行fillRect即可 ctx.clearRect0,0,cw,ch; ctx.fillStyle='black'; ctx.fillRect0,0,cw,ch; ctx.beginPath; ctx.arccircle.cx,circle.cy,circle.radius,0,PI2; ctx.closePath; ctx.fillStyle=circle.fill; ctx.fill; ctx.strokeStyle=圆圈.stroke; 冲程 } //侦听mousemove事件和// //具有“handleMousemove”功能的手柄 canvas.onmousemove=handleMousemove; //每次浏览器启动时都会调用此函数 //激发mousemove事件 功能手柄移动{ //告诉浏览器我们正在处理此事件 e、 防止违约; e、 停止传播; //获取当前鼠标位置 var mouseX=parseInte.clientX-BBoffsetX; var mouseY=parseInte.clientY-BBoffsetY; //将圆心{}X,Y设置为鼠标位置 circle.cx=mouseX; circle.cy=mouseY; //重新绘制画布,使圆圈位于其底部 //新定义的位置 画 } 正文{背景色:象牙;} 画布{边框:1px纯红;} 移动鼠标,圆圈将跟随 演示: