在拖动事件D3上旋转矩形

时间:2017-04-19 07:20:24

标签: javascript d3.js

大家好我试图在用户用鼠标拖动矩形时旋转矩形。矩形遵循圆形曲线。 下面我附上我的完美解决方案,但鼠标始终位于矩形的左上角。我希望鼠标在拖动过程中始终位于矩形的中心。我该如何控制它?

解决方案:

var drag = d3.drag().on("drag", function () {
            var rect = d3.select(this);
            var theta = Math.atan2(d3.event.y - height/2, d3.event.x - width/2) * 180 / Math.PI


            rect
                .attr("x", d3.event.x)
                .attr("y", d3.event.y)
                .attr('transform', `rotate(${theta + 90}, ${d3.event.x}, ${d3.event.y})`)



         })

我可以在此处看到我的解决方案的完整代码:https://jsfiddle.net/hsspve49/

1 个答案:

答案 0 :(得分:2)

通过矩形的大小偏移拖动处理程序中的x和y属性,例如:

...
.attr("x", d3.event.x - 15) // half the width
.attr("y", d3.event.y - 35) // half the height
...