我试图防止旋转的标签被拖出屏幕,但我无法弄清楚如何在旋转状态下获取对象的 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 的函数——考虑到旋转角度和文本长度并不总是相同的。
任何人都可以帮忙吗?