In v3 I used drag origin to prevent a noticeable jump due to the mouse-position/element-coordinates offset. Is there an alternative in v4 as the origin function has been removed?
var drag1 = d3.behavior.drag()
.origin(function () {
var t = d3.select(this);
return {
x: t.attr("x") + d3.transform(t.attr("transform")).translate[0],
y: t.attr("y") + d3.transform(t.attr("transform")).translate[1]
};
})
.on("drag", function (d, i) {
d3.select(this).attr("transform", function (d, i) {
return "translate(" + [d3.event.x, d3.event.y] + ")"
})
});
var drag2 = d3.behavior.drag()
.origin(function () {
var t = d3.select(this);
return { x: t.attr("x"), y: t.attr("y") };
})
.on("drag", function (d, i) {
d3.select(this)
.attr("x", d3.event.x)
.attr("y", d3.event.y);
});
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…