1
我所拥有的是一个SVG(大约300px)内的可拖动行。我的目标是限制线路移动的距离,因此它不会超出我的SVG。我约一小时使用d3,所以任何帮助表示赞赏。D3有界的拖动
我试过使用一些if语句,但他们都没有工作。这是我的代码:
var svg = document.getElementById("probabilityDensitySVG");
var drag = d3.behavior.drag()
.on('dragstart', null)
.on('drag', function(d){
var dx = d3.event.dx;
var dy = d3.event.dy;
var x1New = parseFloat(d3.select(this).attr('x1'))+ dx;
var y1New = parseFloat(d3.select(this).attr('y1'));
var x2New = parseFloat(d3.select(this).attr('x2'))+ dx;
var y2New = parseFloat(d3.select(this).attr('y2'));
line.attr("x1",x1New)
.attr("y1",y1New)
.attr("x2",x2New)
.attr("y2",y2New);
}).on('dragend', function(){
});
var line = d3.select(svg)
.append("line")
.attr("x1",100)
.attr("y1",143)
.attr("x2",100)
.attr("y2",370)
.attr("stroke-width",5)
.attr("stroke","black")
.call(drag);
谢谢!这正是我所期待的。语法的一个例子非常有用。 – allegro
@allegro我发现你发布了另外一个问题,并且你对SO非常熟悉,所以,这里有一个提示:除非你承认有用的答案,否则人们将停止回答你的问题(我的意思是,这就是我通常所做的)。 –
感谢您的提醒!自从我开始回到SO之后已经有一段时间了。 – allegro