2017-03-02 103 views
0

问题迎刃而解==使用d3.drag(),并使用D3-drag.v1.min.jsD3js:无法设置)拖动行为棋子代替d3.behaviour.drag(

我已经建立了一个使用D3js的SVG棋盘,用于循环遍历每行和每列。我使用unicode作为棋子,因此每个棋子都是svg元素。

我想拖动D3js的拖动行为的棋子,但不可能。

所有棋子都有“可拖动”类。于是,我产生的阻力,并将其与类连接到的所有元素“拖动”

var drag = d3.behavior.drag() 
    .origin(function() { 
     var t = d3.select(this); 
     return {x: t.attr("x"), y: t.attr("y")}; 
    }) 
    .on("dragstart", function() { 
     d3.event.sourceEvent.stopPropagation(); // silence other listeners 
    }) 
    .on("drag", function(d,i) { 
     d3.select(this) 
     .attr("x", d3.event.x) 
     .attr("y", d3.event.y); 
    }); 

d3.selectAll(".draggable").call(drag); 

我完整的代码是在这里http://codepen.io/linhnt1516/pen/ZeGoNj?editors=0011

另外,我还试图用同样的拖动功能方面与其他和SVG元素例子。查看此代码笔http://codepen.io/linhnt1516/pen/VpvobE?editors=0011并拖动文本和框。

我一直在寻找大量的D3js拖动例子,但没有一个与棋子的情况下工作。

任何人都有任何解决方案或想法在这里可能出现问题。

+1

这是拖动。确切的问题是什么? –

+0

@GerardoFurtado嘿,谢谢你的提问。我已经找出了问题。所以代码被更新。拖动行为现在很好。顺便说一句,现在我想将这件作品移到一个新的地方,当作品在一个正方形上时,该正方形会得到一个新的突出边框。所以每个广场都有一个事件触发,当一块移动它时。任何建议?谢谢。 –

+0

如果您有其他问题,请发表其他问题。并非所有人都阅读评论。 –

回答

0

我还没有完全理解D3 V4和V3 D3拖动行为或什么是behaviour.drag()的实际问题之间的区别

之前我使用D3 v3和建立

var drag = d3.behaviour.drag() 

这不符合问题中的描述。

不过,我发现了一个支持D3脚本是D3-drag.v1.min.js

<script src="https://d3js.org/d3.v4.min.js" charset="utf-8"></script> 

所以,当我加入这一个,并成立

var drag = d3.drag() 

拖动的详细代码和上面一样,只是不同的初始化语法。拖动功能现在可以正常工作。如果有人知道为什么.behaviour.drag()不起作用,我的旧代码和新工作代码之间的实际区别是什么,请赐教。