2011-09-11 10 views
2

私は今このコードを持っています:http://jsfiddle.net/DK67k/2/ ここでは2Dタイルマップです。タイルをクリックすると、アラート時に座標が表示されます。 しかし、あなたが左上のタイル(タイルは16x16です)をクリックする必要があります座標を取得するために右下のタイルをクリックすると、私は2番目のタイルの座標を取得しています。タイルマップ座標

誰でもこの問題を解決する方法がありますか?

答えて

2

Blaus '答えが正しい。 キャンバスオフセットを左と上の位置から差し引いて、キャンバス要素を10pxのパディングに相対的ではなく動的な配置に使用できるようにすることもできます。

function mouseCheck(e) { 
    var x = e.pageX - canvas.offsetLeft; 
    var y = e.pageY - canvas.offsetTop; 
    mouseX = Math.floor(x/16); 
    mouseY = Math.floor(y/16); 
} 
+0

驚くばかり!非常に非常に感謝Blauとhellozimi! – uvyre

+0

@hellozimi私はjavascriptを学ぶべきです。私は抽選のループがないことに興味があります。私はあなたが何かを動かす必要がある場合は、ペイントイベントまたは同様のものにリスナーを追加する必要があります: – Blau

3

キャンバスポイント(0,0)はマウス座標(10,10)です。キャンバスの親のために、パディングエリアがあると思います。

function mouseCheck(e) { 
    x = e.pageX-10; 
    y = e.pageY-10; 
    mouseX = Math.floor(x/16); 
    mouseY = Math.floor(y/16); 
}