私はウェブページ上にHTML5キャンバスを持っています。ユーザーがキャンバスをクリックすると、キャンバスに相対的なX座標とY座標を取得したいと思います。私はダートでこれをしたいと思います。DartのHTML5キャンバスをマウスでクリックしてXとYを取得するにはどうすればよいですか?
答えて
ダートは今getBoundingClientRect場合、同期バージョンを持っているので、あなたはもう非同期バージョンを使用する必要はありません。
var clientRect = ctx.canvas.getBoundingClientRect();
ctx.canvas.on.click.add((e) {
var x = e.clientX - clientRect.left;
var y = e.clientY - clientRect.top;
});
あり、同じことを行うのMouseEventで「offsetX」と「offsetY」ゲッターもあるが、私は、彼らが標準ではないため、これらのフィールドは、その永遠になるかはわかりません。
この答えが古くなって、
上記の受け入れ答えは簡単Pointクラスの作成を参照してください:
class Point {
final int x;
final int y;
Point(this.x, this.y);
}
インポートダーツ:HTMLライブラリ:
import 'dart:html';
まずステップを取得キャンバスのクライアント境界矩形:
Point clientBoundingRect;
Future<html.ElementRect> futureRect = ctx.canvas.rect;
futureRect.then((html.ElementRect rect) {
clientBoundingRect = new Point(rect.bounding.left, rect.bounding.top);
});
次に、ウィンドウからキャンバスまでのオフセットアルゴリズムを定義します。
Point getXandY(e) {
num x = e.clientX - clientBoundingRect.x;
num y = e.clientY - clientBoundingRect.y;
return new Point(x, y);
}
次に、キャンバスにクリックイベントハンドラをアタッチ:
ctx.canvas.on.click.add((e) {
click = getXandY(e);
});
私は質問をしてすぐにそれに答えることは、そこにこの情報を得るための最良の方法ですが、いくつかは有用であると確信しています。このコードを実際に表示するためにjsfiddleを作成できますか? –
jsfiddleがダーツをサポートしているとは思わない... –
@SethLadd 2013年1月のダーツへのチャネージに照らしてこの例を更新できますか? –
- 1. DataGridViewで現在のセル位置xとyを取得するにはどうすればよいですか?
- 2. キャンバスでXとYをクリックしてオブジェクトを移動する
- 3. コンタープロットでプロットされた線の(x、y)値を取得するにはどうすればよいですか?
- 4. X、Yでピクセルの色をC#で取得するにはどうすればよいですか?
- 5. (x、y)位置でppmイメージの色を取得するにはどうすればよいですか?
- 6. HTML5キャンバスで点のX Yをパーセントで調整します。
- 7. 地形をマウスでクリックするにはどうすればよいですか?
- 8. 特定のx、y座標でクリックをテストするにはどうすればよいですか?
- 9. キャンバス上の円のX-Y位置を変更するにはどうすればいいですか?
- 10. フレームからマウスをクリックしたときにx、yの位置を取得する方法は?
- 11. Dartでキャンバス要素を作成するにはどうすればよいですか?
- 12. Z = Y - Xのようなものを得るにはどうすればいいですか?感謝
- 13. YouTube5のHTML5バージョンからHTML5の動画URLを取得するにはどうすればよいですか?
- 14. xとyの座標をクリックして.NET WebBrowserコントロールで画像ボタンのクリックをエミュレートするにはどうすればよいですか?
- 15. Dartの型インスタンスから修飾名を取得するにはどうすればよいですか?
- 16. html5キャンバスを使用して画像にテキストを追加するにはどうすればよいですか?
- 17. Dartで日付をフォーマットするにはどうすればよいですか?
- 18. Javascriptでマウスの位置を正しく取得するにはどうすればよいですか?
- 19. Javascriptキャンバス上のクリックリスナーでカーソルのx値とy値を取得
- 20. JavaScriptクラス内でHTML5のキャンバスを正しく使用するにはどうすればよいですか?
- 21. Dart Polymerカスタム要素のインスタンスをDartコードで作成するにはどうすればよいですか?
- 22. マウスでゲームオブジェクトをクリックしてドラッグするにはどうすればよいですか?
- 23. DartでLISP(適用)を行うにはどうすればよいですか?
- 24. マウスの移動でキャンバスの子の位置を変更するにはどうすればよいですか?
- 25. System.Drawing.PointをJSONに変換します。 'X'と 'Y'を 'x'と 'y'に変換するにはどうすればよいですか?
- 26. C#でクリックしてコントロールの画像を取得するにはどうすればよいですか?
- 27. x、y、z軸を使用して3Dグラフをプロットするにはどうすればよいですか?
- 28. Dartでコンソールに印刷するにはどうすればよいですか?
- 29. xとyのカテゴリ軸で線グラフをプロットするにはどうすればよいですか?
- 30. 数学でフォルダごとにX個のファイルを取得するにはどうすればよいですか?
良い点、更新いただきありがとうございます。 –
Dart 1.0が出力されており、オフセットがまだ存在しています。どちらを使うのが最適ですか?クライアントとboundingRectまたはオフセット? – GameAlchemist