Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 可拖动拖动事件限制_Javascript_Jquery Ui - Fatal编程技术网

Javascript 可拖动拖动事件限制

Javascript 可拖动拖动事件限制,javascript,jquery-ui,Javascript,Jquery Ui,我试图在html5画布上制作一个动画,当它移动时,它应该跟随一个可拖动的div,类似这样: draggable_div.draggable({ drag: function(e, ui) { canvasDrawSomethingNearDraggable(ui); } stop: function(e, ui) { canvasDrawSomethingNearDraggable(ui); } }); function canv

我试图在html5画布上制作一个动画,当它移动时,它应该跟随一个可拖动的div,类似这样:

draggable_div.draggable({
    drag: function(e, ui) {
        canvasDrawSomethingNearDraggable(ui);
    }
    stop: function(e, ui) {
        canvasDrawSomethingNearDraggable(ui);
    }
});

function canvasDrawRectangleUnderDraggable {
    for (i = 0; i < 10; i++) { // draw overlapping circles in fixed order
        context.beginPath();
        context.arc(x[i], y[i], 10, 0, 2 * Math.PI, false);
        context.fillStyle = c[i];
        context.fill();
        context.stroke();
    }
}
draggable\u div.draggable({
拖动:函数(e、ui){
可拖动的画布绘图(ui);
}
停止:功能(e、ui){
可拖动的画布绘图(ui);
}
});
函数canvasDraw矩形欠拖动{
对于(i=0;i<10;i++){//按固定顺序绘制重叠圆
context.beginPath();
弧(x[i],y[i],10,0,2*Math.PI,false);
context.fillStyle=c[i];
context.fill();
stroke();
}
}
但是,当我移动可拖动元素时,动画会滞后(移动速度越快,间隙越大,仅当可拖动停止事件触发时,动画才会关闭):


有没有办法解决或减少这个问题?我应该计算拖动事件之间的时间间隔,并以这种方式减少对绘图函数的调用,还是有更好的解决方案?

您可能希望取消函数的抖动,这样事件处理程序就不会经常被调用(这会使所有事情都变慢)。例如,见


下划线库()中提供了解盎司的实现。您可以复制该函数以在代码中使用。

更容易看到CanvasDrawSomethingNearDragable(ui)函数,但在Dragable div的子对象中拖动开始时,您可能会得到更好的结果,这样画布就会移动。为说明添加了一些非常类似的内容,您的意思是节流,而不是去盎司。如果对其进行解块,则每x毫秒到达的事件流在流停止之前不会导致调用处理程序。