我正在使用kineticjs在画布上绘制一些小部件。这个小部件是 600px 宽,由几个矩形组成(默认为 24 个)。在这个矩形上可以拖动另一个矩形,我们称之为“光标”。
我希望光标仅在鼠标足够远时才跳转到其他矩形,而不是平滑拖动(如果您愿意,可以像步进拖动一样)。
例如,如果光标位于 0,0 并且我总共有 24 个矩形,我希望我的光标仅在鼠标位于 25,0(600px / 24 个矩形 = 25px)时移动到下一个矩形。
为此,我实施了:
cursor.setDragBoundFunc(function(pos){
var caseSize = WIDTH / caseNum;
var posX = Math.round(pos.x/caseNum) * caseSize;
if(posX > (WIDTH - caseSize)) {
posX = WIDTH - caseSize;
}
if(posX < 0 ) {
posX = 0;
}
return {
x: posX,
y: cursor.getAbsolutePosition().y
}
});
问题pos.x
不代表画布中的鼠标位置,而是从拖动事件开始的鼠标位置(即使我从画布中间开始拖动,pos 也将为 0,0)。
这是问题的一个例子:http: //jsfiddle.net/H9rpz/
如何在画布中获取鼠标位置setDragBoundFunc()
?
谢谢