【发布时间】:2014-04-07 22:27:25
【问题描述】:
我正在慢慢地用 d3.js 做一个工作流设计器。我正在尝试从示例中添加平移/缩放行为。关于如何使它工作的任何想法?我已经让它部分工作了,非常粗糙,有可怕的抖动,但在我的挫败中我没有保存就修改了它,尽管它还是很差。
工作流程进行中
平移/缩放示例
http://bl.ocks.org/benzguo/4370043
鼠标向下
if (!mousedown_node && !mousedown_link) {
// allow panning if nothing is selected
svg.call(d3.behavior.zoom().on("zoom"), rescale);
return;
}
鼠标上移
if (!mousedown_node && !mousedown_link) {
// allow panning if nothing is selected
force.start();
svg.call(d3.behavior.zoom().on("zoom"), null);
return;
}
附加事件
为力有向图创建背景。
var svg = d3.select('body')
.append('svg')
.attr('width', width)
.attr('height', height);
调用缩放函数的行为
svg.call(d3.behavior.zoom().on("zoom", rescale))
.on("dblclick.zoom", null)
.on("mousemove", mousemove)
.on("mousedown", mousedown)
.on("mouseup", mouseup);
回调缩放事件
// rescale g
function rescale() {
var trans=d3.event.translate;
var scale=d3.event.scale;
svg.attr("transform",
"translate(" + trans + ")"
+ " scale(" + scale + ")");
}
【问题讨论】:
标签: javascript d3.js