HTML5 Canvas のチュートリアルを行っています。 http://www.html5canvastutorials.com/kineticjs/html5-canvas-drag-and-drop-events-tutorial/
キャンバスの特定の領域にオブジェクトをドラッグしたいのですが、そのオブジェクトをその領域からドラッグしてはいけません。どうすればこれを達成できますか?
HTML5 Canvas のチュートリアルを行っています。 http://www.html5canvastutorials.com/kineticjs/html5-canvas-drag-and-drop-events-tutorial/
キャンバスの特定の領域にオブジェクトをドラッグしたいのですが、そのオブジェクトをその領域からドラッグしてはいけません。どうすればこれを達成できますか?
オブジェクトをドラッグできる場所を制限するには、カスタムのドラッグ境界関数を定義する必要があります。そのようです:
var yellowGroup = new Kinetic.Group({
x: stage.getWidth() / 2,
y: 70,
draggable: true,
dragBoundFunc: function(pos) { // <--- starting here
var x = stage.getWidth() / 2;
var y = 70;
var radius = 50;
var scale = radius / Math.sqrt(Math.pow(pos.x - x, 2) + Math.pow(pos.y - y, 2));
if(scale < 1)
return {
y: Math.round((pos.y - y) * scale + y), //<--- you have to return an object like {x: number, y: number }
x: Math.round((pos.x - x) * scale + x)
};
else
return pos;
} // this bounds the dragging into a circle area.
});
基本的に、ポイントを設定できる場所を決定するのは、ちょっとした数学です。