2011-07-06 41 views
2

我正在寻找一个javascript函数,它使用均匀间隔的网格来计算网格值的捕捉。在JavaScript中捕捉网格

现在我有下面的代码,它可以很好地作为一个基本的解决方案,但现在我只需要在snap位置的say 2px之内捕捉它,例如,使用30像素间隔电网和2px的限制,它会和0像素2px的,28px和32PX,58px和62px之间的咬合等

snapToGrip = function(val,gridSize){ 
    return gridSize * Math.round(val/gridSize); 
}; 

非常感谢

回答

7

你有没有考虑使用jQuery UI? The draggable utility允许捕捉。

如果你真的需要实现它,当你不应该捕捉到 时,这将返回null。

snapToGrip = function(val,gridSize){ 
    var snap_candidate = gridSize * Math.floor(val/gridSize); 
    if (val-snap_candidate < 2) { 
     return snap_candidate; 
    } 
    else { 
     return null; 
    } 
}; 

要扣两个方面:

snapToGrip = function(val,gridSize){ 
    var snap_candidate = gridSize * Math.round(val/gridSize); 
    if (Math.abs(val-snap_candidate) < 2) { 
     return snap_candidate; 
    } 
    else { 
     return null; 
    } 
}; 
+0

是的,我认为它,但我建立一个定制的应用程序,它不使用这样的库自圆其说。 – Steve

+0

@Steve好的...我添加了一些代码。 – fulmicoton

+0

谢谢,感谢。我已经实现了代码,当从右向左(捕捉点)移动对象时工作正常,但从左向右拖动时(捕捉点)不能正常工作。 – Steve