回転したラベルが画面からドラッグされないようにしようとしていますが、回転した状態のオブジェクトの MinX、MaxX、MinY、および MaxY を取得する方法がわかりません。getHeight と getWidth は、回転前の値のみを返します。
問題を示す例を次に示します。
var stage = new Kinetic.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight
});
var layer = new Kinetic.Layer();
var labelLeft = new Kinetic.Label({
x: 95,
y: 180,
opacity: 1.0,
listening: true,
draggable: true,
rotationDeg: -45,
text: {
text: 'Pointing Arrow',
fontFamily: 'Calibri',
fontSize: 20,
padding: 5,
fill: 'white'
},
rect: {
fill: 'blue',
pointerDirection: 'left',
pointerWidth: 20,
pointerHeight: 38,
stroke: 'black',
strokeWidth: 2
},
dragBoundFunc: function (pos) {
var newY = pos.y < 50 ? 50 : pos.y;
return {
x: pos.x,
y: newY
};
}
});
layer.add(labelLeft);
// add the layer to the stage
stage.add(layer);
この例では、dragBoundFunc を使用して、ラベルが y=50 より上にドラッグされるのを防ぎます。ただし、ラベルが回転しているため、実際の最高点 (MinY) が変更されているため、ラベルを上にドラッグして部分的に非表示にすることができます。
私が本当に必要としているのは、絶対的な現在の MinX、MaxX、MinY、および MaxY を返す関数です。回転角度とテキストの長さが常に同じであるとは限りません。
誰でも助けることができますか?