Javascript 如何在画布中沿鼠标位置绘制矩形?

Javascript 如何在画布中沿鼠标位置绘制矩形?,javascript,html,canvas,Javascript,Html,Canvas,我已经画好了矩形,我只需要跟着鼠标光标从左向右移动。我知道mouseMove和事件侦听器是错误的,我只是把它们放在那里作为一个起点。代码如下: var画布//此变量将用作画布对象的引用 var-ctx//保存上下文值的变量 var-rectX=100//矩形X位置 var-rectY=200//右Y位置 宽度=25//宽度 高度=25//高度 var=10; var=10; var-rectX2=400//矩形X位置 var-rectY2=790//右Y位置 var=2=100//宽度 高度2

我已经画好了矩形,我只需要跟着鼠标光标从左向右移动。我知道mouseMove和事件侦听器是错误的,我只是把它们放在那里作为一个起点。代码如下:

var画布//此变量将用作画布对象的引用
var-ctx//保存上下文值的变量
var-rectX=100//矩形X位置
var-rectY=200//右Y位置
宽度=25//宽度
高度=25//高度
var=10;
var=10;
var-rectX2=400//矩形X位置
var-rectY2=790//右Y位置
var=2=100//宽度
高度2=20//高度
常数宽度=1000//画布的宽度
常数高度=800//画布的高度
函数mouseMove(事件){
var rectX2=clientX;
}
文件。添加了文件列表(“mousemove”,mousemove);
window.onload=函数(){
canvas=document.getElementById(“myCanvas”);
ctx=canvas.getContext('2d');
var framesPerSecond=30;//FPS
setInterval(函数(){
Drawerything();//调用rect函数30 FPS
运动();
},1000/framesPerSecond);//使用内联函数调用移动和绘制函数。30 FPS 1000/30
}
函数drawerything(){
ctx.fillStyle='red'//绘制覆盖正方形的每一帧的白色背景
ctx.fillRect(0,0,宽度,高度);
ctx.fillStyle='黑色'
ctx.fillRect(rectX,rectY,rectWidth,recthheight);//重画每一帧的重画,从而产生运动的错觉
ctx.fillRect(rectX2、rectY2、rectWidth2、recthheight2)
}
函数移动(){
rectX+=rectSpeedX;
rectY+=rectY;
如果(rectX>宽度-12.5 | | rectX<0){
rectSpeedX=-rectSpeedX;
}
如果(直线>高度-12.5 | |直线<0){
rectspited=-rectspited;
}
}
rectX2
*{
填充:0;
保证金:0;
}
帆布{
背景:#eee;
显示:块;
保证金:0自动;
}

您可以将以下内容添加到mouseMove函数中

function mouseMove(event){
  rectX2 = event.pageX;
}
要使其在光标上居中,可以添加:
rectX2=event.pageX-((document.body.clientWidth)/2+(rectWidth2/2))

这样,您也不需要在脚本末尾使用
rectX2=MouseX
。但是如果您需要它,在处理程序中,您只需将
rectX2
换成
mouseX

var画布//此变量将用作画布对象的引用
var-ctx//保存上下文值的变量
var-rectX=100//矩形X位置
var-rectY=200//右Y位置
宽度=25//宽度
高度=25//高度
var=10;
var=10;
var-rectX2=400//矩形X位置
var-rectY2=790//右Y位置
var=2=100//宽度
高度2=20//高度
常数宽度=1000//画布的宽度
常数高度=800//画布的高度
函数mouseMove(事件){
rectX2=rectX2=event.pageX;
}
文件。添加了文件列表(“mousemove”,mousemove);
window.onload=函数(){
canvas=document.getElementById(“myCanvas”);
ctx=canvas.getContext('2d');
var framesPerSecond=30;//FPS
setInterval(函数(){
Drawerything();//调用rect函数30 FPS
运动();
},1000/framesPerSecond);//使用内联函数调用移动和绘制函数。30 FPS 1000/30
}
函数drawerything(){
ctx.fillStyle='red'//绘制覆盖正方形的每一帧的白色背景
ctx.fillRect(0,0,宽度,高度);
ctx.fillStyle='黑色'
ctx.fillRect(rectX,rectY,rectWidth,recthheight);//重画每一帧的重画,从而产生运动的错觉
ctx.fillRect(rectX2、rectY2、rectWidth2、recthheight2)
}
函数移动(){
rectX+=rectSpeedX;
rectY+=rectY;
如果(rectX>WIDTH-12.5 | | rectX<0){
rectSpeedX=-rectSpeedX;
}
如果(直线>高度-12.5 | |直线<0){
rectspited=-rectspited;
}
}
*{填充:0;边距:0;}
画布{背景:#eee;显示:块;边距:0自动;}