d3版本4的拖拽原点变通方法 [英] d3 version 4 workaround for drag origin
本文介绍了d3版本4的拖拽原点变通方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在v3中,我使用拖动源来防止由于鼠标位置/元素坐标偏移引起的明显跳跃。在v4中是否有替代方法,因为原始函数已被删除?
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);
});
推荐答案
这样工作:
var drag = d3.drag()
.subject(subject)
.on("start", function () {
d3.event.sourceEvent.stopPropagation(); // silence other listeners
if (d3.event.sourceEvent.which == 1)
dragInitiated = true;
})
function subject(d) {return { x: 0, y: d3.event.y }};
这篇关于d3版本4的拖拽原点变通方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文