我使用Raphael制作了一个简单的绘图应用程序。我现在尝试绘制波浪线(是否有更好的词),所以我想捕获mousedown和mouseup之间的所有x和y。在这个stackoverflow问题jQuery continuous mousedown处,有一个在事件之间做某事的解决方案,但是我无法让x和y正常工作。我正在尝试使用mousemove()来获取它,但是当函数结束时mousemove()不会停止。拥有可以自动调用x和y的函数会使我陷入无限循环。所以...两件事,如何连续获取x和y以及如何避免无限循环。我知道如何将其放入数组中,然后弯成行,只是不知道如何执行鼠标侦听器。我现在拥有的代码是:

var paper = new Raphael($('#canvas')[0], 500, 500);
var canvas =$('#canvas');

var stillDown = false;
canvas.mousedown(function(){
    console.log("down");
    stillDown = true;
    whileDown();
});

function whileDown(){
    if(!stillDown){return;}else{
    console.log("Still in down.");
        canvas.mousemove(function(e){
        //console.log("X: " + e.offsetX + " Y: " + e.offsetY);
    });
    whileDown();
    }
}

canvas.mouseup(function(){
    stillDown = false;
});


我当前的目标只是在控制台中显示它处于关闭状态,所有x和y处于关闭状态,并且它处于启动状态,此后不显示任何内容。然后,我将处理该信息。无论如何,任何帮助都会很棒!

最佳答案

在mousedown上,只需设置布尔标志:

var stillDown = false;
canvas.mousedown(function(){
    console.log("down");
    stillDown = true;
});


在mousemove上,如果设置了标志,则将坐标推入数组:

var coords = [];
canvas.mousemove(function(e){
    if(!stillDown) return;
    console.log("moving");
    coords.push({x: e.offsetX, y: e.offsetY});
    // and/or do whatever you need with the coordinates
}


在mouseup上,取消设置标志:

canvas.mouseup(function(){
    stillDown = false;
});

关于javascript - jQuery在mousedown和mouseup之间获取所有x和y,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15778344/

10-12 05:20