移动时更新fabricjs对象坐标
问题描述:
我试图在移动时获取对象的x和y坐标。我在object:moving
上使用getLeft()
和getTop()
方法。但是,如果对象旋转,这些方法不起作用。移动时更新fabricjs对象坐标
然后我尝试使用object.getBoundRect().top
获取对象边界框的顶部和左侧。但是这不会动态更新。它在移动操作开始时给出边界框的值。有没有办法在移动时获得边界框的值?
canvas.on('object:moving', function(e) {
var scaledObject = e.target;
$('#mouse-info').text("X:"+parseInt(scaledObject.getBoundingRect().left)+", Y:"+parseInt(scaledObject.getBoundingRect().top));
});
答
萨米,
你正在做的事情是错误的。共达和getLeft做工精细的1.7版本
检查这个代码:
canvas.on('object:moving',function(e){
if (e.target){
console.log(e.target.getTop());
console.log(e.target.getLeft());
}
});
UPDATE:
如果你想有旋转你以后每次做渲染:
canvas.on('after:render', function() {
canvas.contextContainer.strokeStyle = '#555';
canvas.forEachObject(function(obj) {
var bound = obj.getBoundingRect();
canvas.contextContainer.strokeRect(
bound.left + 0.5,
bound.top + 0.5,
bound.width,
bound.height
);
});
var ao = canvas.getActiveObject();
if (ao) {
var bound = ao.getBoundingRect();
console.log(bound.left);
console.log(bound.top);
}
});
此代码将为每个渲染后的每个形状绘制边界框。如果你想隐藏边框删掉这些代码:
canvas.contextContainer.strokeStyle = '#555';
canvas.forEachObject(function(obj) {
var bound = obj.getBoundingRect();
canvas.contextContainer.strokeRect(
bound.left + 0.5,
bound.top + 0.5,
bound.width,
bound.height
);
});
这里是一个fiddle
希望,它会帮助你。
它不适用于旋转的对象。 – Sammy
我仍然得到输出。但是由于旋转时对象的左侧发生了变化,所以这是不正确的。 – Sammy
检查更新的帖子。我做了更新,而不是使用对象:render:render后使用 – Observer