如果你打算爲捕捉到一個nxm網格的東西,你想添加一個偵聽器來調用一個捕捉它的函數。你可能會想在 「dragend」
http://www.html5canvastutorials.com/kineticjs/html5-canvas-drag-and-drop-events-tutorial/
box.on("dragend", function(){
snaptogrid(box);
});
... 100x100的網格廣場磚
function snaptogrid(YourObject){
YourObject.x = Math.floor(YourObject.x/100) * 100 + 50;
YourObject.y = Math.floor(YourObject.y/100) * 100 + 50;
}
前要做到這一點:如果YourObject.x = 325,那麼你將有Math.floor(3.25)* 100 + 50 = 350.左邊和頂部應該都在300,而中心在350.
編輯,oops錯過了部分問題。爲了捕捉到其他的廣場,這裏就是我想要做的:
function snaptoOther(YourSquares, index){
var lastone = YourSquares.length-1;
var maxDist = 125;
var minDist = 75;
var squarelength = 100;
for(var i=0; i<lastone; i++)
{
var checkx = abs(YourSquares[index].x - YourSquares[i].x);
var checky = abs(YourSquares[index].y - YourSquares[i].y);
var multiplyX = Math.round((YourSquares[index].x - YourSquares[i].x)/squarelength);
var multiplyY = Math.round((YourSquares[index].y - YourSquares[i].y)/squarelength);
if(checkx < maxDist && checkx > minDist && i !== index)
{
YourSquares[index].x = YourSquares[i].x + multiplyX*squarelength;
}
if(checky < maxDist && checky > minDist && i !== index)
{
YourSquares[index].y = YourSquares[i].y + multiplyY*squarelength;
}
}
}
非常感謝,,,一定會試試看 – ashishashen 2012-03-05 09:32:17
謝謝..對於幫助..把它.. :) – ashishashen 2012-03-05 12:06:09
很高興聽到。我是KineticJS的大力支持者,很高興看到您使用它。我鼓勵你在KineticJS論壇發帖分享你的創作。 – randompast 2012-03-06 05:04:01