В общем, что я хочу сделать, это объединить эти два примера:D3.js сила макета с перетащить/масштабирование/панорамирование и присоединиться к узлам возможности
http://bl.ocks.org/mbostock/6123708
http://bl.ocks.org/benzguo/4370043
Я думал использовать нажатие клавиши, чтобы выбрать, если я хочу, чтобы перетащить узел, или нарисовать линию, что-то вроде этого:
function dragstarted(d) {
d3.event.sourceEvent.stopPropagation();
if (d3.event.sourceEvent.ctrlKey) {
// drag a line
} else {
// drag the node
}
}
dragstarted функция вызывается на dragstart
событие. В этом случае я должен остановить событие перетаскивания для этого узла, но я не знаю, как это сделать. Я пробовал звонить
d3.select(this).on('.drag', null);
с результатами.
Другой вариант, чтобы подписаться каждый узел в mousedown.drag
с помощью этой функции:
function dragDecisor(d) {
if (d3.event.ctrlKey) {
console.log('Draw a line...');
} else {
console.log('Drag a node...');
}
}
Но мне нужно, чтобы событие перетаскивания для распространения, и, кажется, не существует четкого способа сделать это , Я попытался создать событие, как объясняется mbostock (я не могу опубликовать больше ссылок, см. Вопрос d3 № 100).
Любые советы?
Прохладный! Я не понял, что второй пример использовал d3 v2. С v3 у меня возникают некоторые проблемы, так как кажется, что я не могу использовать функцию вызова для объекта vis. Вы знаете, как это исправить? –
Да, у истины V3 есть некоторые проблемы, которые за пределами меня исправить :) – Cyril