私は、ゲーム開発目的で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 draggables(http://jqueryui.com/demos/draggable/)を考えています。あなたがjQueryに行かなくても、私は高度化していないバージョンをチェックし、彼らが何をしているかを非常に助言します。開発者は、これらのパフォーマンスの問題のいくつかを間違いなく考えました。リベラルなライセンスのため、コードベースの小さな断片を切り抜ける可能性があります。 – buley
[fabric.js](https://github.com/kangax/fabric.js)をご覧ください。ここにデモがあります:http://kangax.github.com/fabric.js/stickman/ –