更新
忽略下面的大部分内容,重新阅读您的问题,似乎您已经掌握了理论。您的问题很可能是缺少 mousedown 和 mouseup 函数参数。请尝试以下操作;
document.getElementsByTagName('canvas')[0].addEventListener('mousedown', function(e){
// I THINK IT'S THE e ON THE LINE ABOVE THIS THAT YOU'RE MISSING.
// YOU CAN THEN ACCESS THE POSITION OF THE MOUSE USING;
mouse.x = e.pageX;
mouse.Y = e.pageY;
})
我不会为你写代码,但我可以给你理论。
将鼠标 x 和 y 变量存储在 mouse = {} 等对象中。
为鼠标按下(单击)添加一个事件监听器并将 e.pageX 和 e.pageY 存储在 mouse.firstX 和 mouse.firstY 中。使用类似的东西:
document.getElementsByTagName('canvas')[0].addEventListener('mousedown', function(e){
mouse.firstX = e.pageX;
mouse.firstY = e.pageY;
})
为 mouseup 的画布创建第二个事件侦听器,并将这组 e.pageX 和 e.pageY 存储在 mouse.secondX 和 mouse.secondY 中。
计算 firstX 和 secondX、firstY 和 secondY 之间的差异,以计算出你的矩形声音大。
var width = mouse.firstX + mouse.secondX // rect width
var height = mouse.firstY + mouse.secondY // rect height
然后,使用这些计算,使用 firstX 和 firstY 作为位置参数在画布上绘制一个矩形。
我希望这相对清晰并且对您有所帮助。如果没有,这可能会有所帮助;
http://simonsarris.com/blog/140-canvas-moving-selectable-shapes