キャンバスを定義してその上に少数のシェイプを描画すると、各シェイプのイベントやその他のプロパティを宣言するために、シェイプまたはイメージのそれぞれをどのように特定することができますか?私は長方形と三角形を持っていると考えてください。特定のエンティティとして定義するためのメカニズムを持つことができますし、個別に処理することもできます。私はKineticJSについて知っていますが、この機能を私自身で実装したいと思います(学習目的のために)。誰でもそれを行う方法を突き止めることができます。または、アルゴリズム的なアプローチかもしれませんか?キャンバスで図形を識別する方法は?
答えて
はDOMの既存機能を使用できません。だからあなたはそれをあなた自身で書く必要があります。そして、あなたは上のonclickイベントを処理することができ
var cnv = new Canvas();
cnv.addShape(new Rectangle(10,10,100,100));
cnv.paint();
:あなたはこのような図形を描画するためにそれを使用することができ、オブジェクトモデルを作った後
function Shape(x, y) {
var obj = {};
obj.x = x;
obj.y = y;
obj.paint = function(canvasTarget) {
}
return obj;
}
function Rectangle(x, y, width, height) {
var obj = Shape(x, y);
obj.width = width;
obj.height = height;
obj.paint = function(canvasTarget) {
//paint rectangle on the canvas
}
return obj;
}
function Canvas(target) {
var obj = {};
obj.target = target
obj.shapes = [];
obj.paint = function() {
//loop through shapes and call paint
}
obj.addShape(shape) {
this.shapes.push(shape);
}
}
:あなたはこのようなオブジェクトモデルを作ることによって開始することができますどの形状がクリックされたかを判断することができます。
ペイントメソッドは、最後のイメージやシェイプを操作するのではなく、キャンバスのすべての詳細を再描画することを意味しますか? –
図形を描画するのは、paintメソッドです。 x、y、幅、高さを変更することで形状を操作できます。 –
しかし、キャンバスの既存の図形はどうですか?既存の長方形があるかのように、メソッドを呼び出すことによってそれを削除する必要がありますか? –
私はマウスイベントは、マウスの位置
function getMousePos(canvas, evt){
// get canvas position
var obj = canvas;
wrapper = document.getElementById('wrapper');
var top = 0;
var left = 0;
while (obj && obj.tagName != 'BODY') {
top += obj.offsetTop;
left += obj.offsetLeft;
obj = obj.offsetParent;
}
// return relative mouse position
var mouseX = evt.clientX - left + window.pageXOffset+wrapper.scrollLeft;
var mouseY = evt.clientY - top + window.pageYOffset+wrapper.scrollTop;
return {
x: mouseX,
y: mouseY
};
}
- を取得するためのメソッドを実装する必要があり、すべての
まず長方形
我々が持っていると言うが、使用してピンポイントを説明したいと思います次の値を持つ長方形x1、y1、w、h
$(canvas).mousemove(function(e){
//Now call the method getMousePos
var mouseX, mouseY;
var mousePos = getMousePos(canvas, e);
mouseX=mousePos.x;
mouseY=mousePos.y;
// check if move on the rect
if(mouseX>x1 && mouseX<x1+w && mouseY>y1 && mouseY<y1+h)
{
alert('mouse on rect')
}
});
- サークル
言って、私たちは
- 1. OnRectangleToolClick:四角形の識別方法は?
- 2. キャンバスやCSSを使用して図形を描画する方法は?
- 3. HTML5キャンバスの上に対話的に図形を描画する方法は?
- 4. ウィンドウフレームなしでJavaで図形や図形を表示する方法は?
- 5. 図面パネルで図形を選択する方法は?
- 6. JavaFXで図形を他の図形に重ねる方法
- 7. WPFでキャンバス図面を最適化する方法は?
- 8. JavaFXで別の図形(円弧)を使用して図形(円)をクリップする方法
- 9. JavaScriptとキャンバスで図形を描画する
- 10. キャンバスで図形を描き、その角度を設定する最善の方法は何ですか?
- 11. キャンバス - 図形の描画と管理
- 12. Excelの図形に似たVB6アプリケーションで図形を作成する方法
- 13. ajaxリクエストを識別する方法は?
- 14. SeleniumにPNG形式でキャンバスを保存する方法は?
- 15. iOSで「ブラウザを識別する」方法
- 16. bokehで図形をオーバーレイするか図形のハンドルを得る方法はありますか?
- 17. キャンバス線図をキャンバス線図にエクスポートする
- 18. 図形の下で色を排除する方法は? (SDL2)
- 19. reStructuredText/Sphinxで浮動図形を作成する方法は?
- 20. 2次元配列の図形認識
- 21. Mablabは別の図形から1つの図形を呼び出す
- 22. キャンバスから別のキャンバスにデータをコピーする方法
- 23. キャンバスでアニメーションを使用して図形を作成
- 24. D3js:地形図のデザイン方法は?
- 25. 矢印キーでキャンバスに図形を移動
- 26. キャンバスで図形の上にイメージを表示
- 27. 図キャンバスの色(PyQt)を変更する方法
- 28. WPFキャンバス上の図を拡大する方法
- 29. HTML5キャンバスにオーディオ波形をレンダリングする方法は?
- 30. キャンバスで図面を停止または一時停止する方法
があれば指定してくださいキャンバスのオブジェクトを正確に特定することができます。この方法により、以下の値x、yのもつ円、R
を持っていますアルゴリズムは上記の通りです。 JSプログラミングの条項のように。 –