Самый чистый код перетаскивания на холсте Javascript

Я ищу самый быстрый и легкий способ перетаскивать фигуры и спрайты на холст JS для целей разработки игр.

Я начал с проверки расстояния, используя текущее положение мыши и начало кругов. Это работает, но когда они перекрываются, у нас возникают проблемы, и я не знаю, насколько хорошо это будет работать при тестировании нескольких спрайтов и других форм еще на каждом «кадре».

Приветствуются любые комментарии или указатели на лучшие методы!

Я бы предпочел не использовать такую ​​библиотеку, как 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;
}
7
задан Jonas 16 December 2011 в 01:14
поделиться