Я ищу самый быстрый и легкий способ перетаскивания фигур и спрайтов на JS Canvas для целей разработки игр.Самый чистый код перетаскивания в Javascript Canvas
Я начал с выполнения дистанционных проверок с использованием текущей позиции мыши и истоков кругов. Он работает, но когда они перекрываются, у нас есть проблемы, и я не знаю, насколько хорошо это будет работать при тестировании для нескольких спрайтов и других фигур еще на каждом «фрейме».
Любые комментарии или указатели на лучшие методы оцениваются!
Я бы предпочел не использовать библиотеку, такую как 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 draggables (http://jqueryui.com/demos/draggable/). Даже если вы не поедете с jQuery, я бы очень посоветовал проверить несрочную версию и посмотреть, что они делают. Разработчики определенно продумали некоторые из этих проблем с производительностью. Из-за либеральной лицензии вы, вероятно, можете вырезать небольшой кусок кода. – buley
Возможно, вы захотите посмотреть на [fabric.js] (https://github.com/kangax/fabric.js). Вот демонстрация: http://kangax.github.com/fabric.js/stickman/ –