我正在尋找最快最輕鬆的方式來拖放形狀和精靈在JS畫布上的遊戲開發目的。最簡潔的拖放代碼在Javascript畫布
我已經開始通過使用當前鼠標位置和圓圈的起源進行距離檢查。它可以工作,但是當它們重疊時,我們會遇到問題,並且我不知道在每個「框架」上測試多個精靈和其他形狀時它會如何工作。
任何意見或更好的方法指針表示讚賞!
我寧願不使用像jQuery這樣的庫,因爲我要求純粹的速度和輕量級,當然要學習實際的方法!這裏是我在哪裏:
//add the canvas listeners and functions
canvas.addEventListener("mousemove",mousemove);
canvas.addEventListener("mousedown",mousedown);
canvas.addEventListener("mouseup",mouseup);
function mousemove(e){
mouseX = e.layerX - canvas.offsetLeft;
mouseY = e.layerY - canvas.offsetTop;
//for each circle stored in my array of Circle objects, is my mouse within its'
//bounds? If so, set the circles' (X,Y) to my mouse's (X,Y)
for(i=0;i<circArray.length;i++){
dx = mouseX - circArray[i].x;
dy = mouseY - circArray[i].y;
dist = Math.sqrt((dx*dx) + (dy*dy));
if(draggable && dist < circArray[i].r){
circArray[i].x = mouseX;
circArray[i].y = mouseY;
}
}
}
function mousedown(){
draggable = true;
}
function mouseup(){
draggable = false;
}
你在考慮jQuery UI可拖動(http://jqueryui.com/demos/draggable/)。即使你不使用jQuery,我也會強烈建議檢出一個未經版本化的版本並查看它們的功能。開發人員已經明確地考慮了其中的一些性能問題。由於自由許可,您可能會刪除一小部分代碼庫。 – buley 2011-12-16 00:35:39
你可能想看看[fabric.js](https://github.com/kangax/fabric.js)。這是一個演示:http://kangax.github.com/fabric.js/stickman/ – 2011-12-16 01:18:18