0

我正在尝试在正方形内使用自定义字体约束文本元素。我很难让约束发生。

对于 move 函数,我的代码如下所示:

if (this.attr("y") > offsetY || this.attr("x") > offsetX) { // keep dragging & storing original x and y
    this.attr({
        x : this.ox + dx,
        y : this.oy + dy
    });
} else {
    nowX = Math.min(offsetX, this.ox + dx);
    nowY = Math.min(offsetY, this.oy + dy);
    nowX = Math.max(0, nowX);
    nowY = Math.max(0, nowY);
    this.attr({
        x : nowX,
        y : nowY
    });
}

约束永远不会发生。但是,如果我在这段代码中使用两个方块,它就可以工作。我在这里俯瞰什么?

感谢您的回答:)

4

1 回答 1

0

如果您在调用时使用了默认的文本锚值 'middle' paper.text(),则 x 和 y 属性将返回文本跨度中心的坐标——而不是它的左上角,就像使用 rect 一样。

您应该通过element.getBBox()获取坐标,而不是使用xand属性,然后从结果对象中使用and 。这应该使您现有的逻辑能够畅通无阻地工作。yxy

于 2012-08-20T16:44:03.293 回答