javascript - 鼠标按下时捕获所有鼠标坐标

标签 javascript html

<分区>

如何使用普通 javascript 捕获鼠标在 mousedown 事件中移动经过的所有坐标?

var my_canvas=document.getElementById("drawing-pad");
var ctx=my_canvas.getContext("2d");
my_canvas.addEventListener("mousedown", draw_on_click, false);

function draw_on_click(e){
    var x_pos=e.clientX;
    var y_pos=e.clientY;
    ctx.fillStyle = "#FF0000";
    ctx.fillRect(x_pos,y_pos,15,15);
}

我原以为处理程序会在每个坐标上运行(如果可以的话会很好!)但我错了。

我看到了与我的问题相似的答案 here在 SO 中,但它使用 Jquery,我试图远离它,因为我想在更熟练地掌握核心和客户端 javascript 之后开始使用 Angular。

想法:想到一件事。我应该在处理程序中使用 setInterval 并定期捕获 clientX 和 clientY 并在发生 mouseup 事件时将其清除吗?我认为对吗?有更好的方法吗?

最佳答案

您需要 3 个事件处理程序

如果 mousedown 设置 ismousedown 为真。 如果 mouseup 设置 ismousedown 为 false。 如果鼠标向下,则在 mousemove 中绘制。

canvas.addEventListener('mousedown',mousedown,false);
canvas.addEventListener('mousedmove',mousedmove,false);
canvas.addEventListener('mouseup',mouseup,false);
var isMouseDown=false;

function mousedown(){
 isMouseDown=true
}
function mousemove(){
 if(isMouseDown){
  //do stuff
 }
}
function mouseup(){
 isMouseDown=false
}

这是一个部分工作的绘图演示。单击圆形矩形或绘制。 draw&erease 就像上面描述的圆圈和矩形是基于 2 点(2 次点击)

http://jsfiddle.net/k5LUT/

您需要将 erease 设置为 c.strokeStyle='hsla(0,0%,0%,0)'; 并且填充无法正常工作。

关于javascript - 鼠标按下时捕获所有鼠标坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122662/

相关文章:

javascript - 如何通过 WebView 将来自 javascript 的 Alert() 操作接收到 Cocoa 应用程序

javascript - 如何从用户输入字段更改 JavaScript 变量(在 HTML 中)

javascript - 如何限制 &lt;textarea&gt; 中的行数?

html - 如何在网页中插入音频并在html中隐藏控件

javascript - 我如何确定 ng-options 何时完成更新 DOM?

javascript - 如何在一个字符串中插入多个变量?

javascript - 在循环中组合 2 个数组中的 2 个对象?

html - 根据高度水平换行?

php - 可能是愚蠢的错误! IF 语句没有运行?

html - 如何调整图像的高度?