2011-06-13 53 views
0

使用原型我試圖每次移動對象時將X和Y增加20px。我可以這樣做:JavaScript原型可拖動

new Draggable('element', {snap:[20, 20]}); 

,它會工作,但我需要以及約束拖動到元素的父節點有:

new Draggable('element', { 
    snap: function(x, y, draggable) { 
     function constrain(n, lower, upper) { 
     if (n > upper) return upper; 
     else if (n < lower) return lower; 
     else return n; 
     } 
     var element = draggable.element.getDimensions(); 
     var parent = draggable.element.parentNode.getDimensions(); 
     return [ 
     constrain((x + 20), 0, parent.width - element.width), 
     constrain((y + 20), 0, parent.height - element.height) 
     ]; 
    } 
}); 

我只能給20像素僅在第一次遞增被移動,但它會做1px的增量。謝謝

回答

2
return [ 
    constrain(Math.round(x/20)*20, 0, parent.width - element.width), 
    constrain(Math.round(y/20)*20, 0, parent.height - element.height) 
]; 
+0

正是我在找的東西......謝謝! – 2011-06-13 17:59:53