私はキャンバス要素を持っています。それをクリックするとe.clientX(Y)またはe.screenX(Y)でクリック位置を取得します。奇妙なことが起きている。 Y値は常に高すぎます。この画像を見てください:http://img840.imageshack.us/img840/268/eventq.jpgどんなイデアがそれほど高いのですか?Clickイベント位置(Y)が高すぎる
0
A
答えて
0
私はかなりあなたが何が起こっているかを伝えることができると確信しています。キャンバスに相対的な座標はなく、ビューポートを基準にした座標です。また、パディングを含むかどうかはブラウザによって異なります。
通常の座標に変換します。あなたの場合、これはキャンバスのオフセットを差し引くことを含む。
+0
Firefox 3.6でoffsetXが動作しない – thomas
+0
申し訳ありませんが、offsetXを使用しないで、投稿を編集しました – buddhabrot
1
あなたはClientXとYを取り、キャンバスの位置をそれらから減算するだけです。
この例では、単に手順を表示するために、不必要に冗長です:
var canvas = document.getElementById('game');
var canvasX, canvasY;
canvas.addEventListener('click', function(event) {
canvasX = canvas.offsetLeft;
canvasY = canvas.offsetTop;
var eventX = event.clientX;
var eventY = event.clientY;
var relX = eventX - canvasX;
var relY = eventY - canvasY;
alert('X = ' + relX + ', Y = ' + relY);
});
ワーキングサンプル:http://jsfiddle.net/JfhJF/
関連する問題
- 1. のC#、Y位置
- 2. xとyの位置。
- 3. 相対的な高さと幅ですが絶対的な位置x、y
- 4. フレームサイズ(幅と高さ)の保持位置(x、y)を変更する
- 5. JavascriptのClickイベントをTimedイベントに置き換えますか?
- 6. x、y位置にImageButtonを配置する方法は?
- 7. Clickイベント
- 8. Clickイベント、
- 9. SurfaceHolder.lockCanvas()が高すぎる
- 10. AndroidキャンバスdrawTextのテキストのy位置
- 11. Raphaelのパス終点のX/Y位置
- 12. フレックスタブのxとyの位置
- 13. HTML5 - createPattern(..) - 動的位置(x、y)
- 14. Y利用可能な位置
- 15. アプレットの位置(x、y座標)
- 16. UIWebViewの画像の幅と高さ、xとyの位置を把握
- 17. SWT:veritcal separatorが高すぎます。横が短すぎる。テーブルが狭すぎる
- 18. JAVAFX - このX/Y位置に何かがありますか?
- 19. LongClickイベントもトリガするClickイベント
- 20. ASP.NET + ModalPopupExtender + Clickイベント
- 21. iframeのClickイベント
- 22. jQuery .click()イベント
- 23. Jqueryとclickイベント
- 24. click()イベントjquery
- 25. ボタンのClickイベント
- 26. CollapsiblePanelExtender Clickイベント
- 27. Jqueryの.clickイベント
- 28. JQuery .mouseenter()イベントは、.click()または.mousedown()イベントよりも非常に高速です
- 29. 正確な幅+高さと位置を保持する固定位置画像
- 30. iframe内の要素のY位置を取得する
は、ページ上の最初の/先頭の要素canvas要素ですか?スクリーンショットではページの上部が見えません。 ClientYは現在の要素ではなく、ページ(ビューポート)自体に関連しています。 – Fosco
テキストがありません...キャンバス要素を基準にしてそれを取得する方法はありますか? – thomas