2011-07-06 71 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