d3.js Двойной щелчок не освобождает узлы

1

Я пытаюсь преобразовать направленный по силе граф из d3 v3 в v4. Мой проект здесь:

https://bl.ocks.org/anonymous/337d113cb77c3695ac6959bebe728795

Почему не выполняется действие двойного щелчка на узлах, высвобождающих узел обратно в схему нормального усилия? Связанные с drag and pin функции находятся непосредственно под кодом узла.

Теги:
d3.js

1 ответ

1
Лучший ответ

После установки свойств d.fx и d.fy узлы не будут перемещаться независимо от d.fixed. Вы устанавливаете эти свойства здесь:

function dragged(d) {
    d.fx = d3.event.x;
    d.fy = d3.event.y;
}

Из документации API d3v4:

Чтобы зафиксировать узел в заданной позиции, вы можете указать два дополнительных свойства:

fx - the nodes fixed x-position
fy - the nodes fixed y-position

В конце каждого тика после применения каких-либо сил узел с определенным узлом.fx имеет node.x сбрасывается на это значение, а node.vx устанавливается на ноль; Аналогично, узел с определенным узлом.fy имеет node.y сбрасывается на это значение, а node.vy устанавливается на ноль. Чтобы исключить ранее установленный узел, установите node.fx и node.fy в значение null или удалите эти свойства.

Я не читал это перед тем, как сделать демонстрацию раздвоенной из вашего блока, но эффект тот же: я установил свойства d.fx и d.fy неопределенным с двойным щелчком, что позволяет им располагаться в соответствии с силой диаграмма.

Причина, по которой вы можете использовать d.fixed для фиксированных позиций, - это метод, используемый в v3:

fixed - логическое значение, указывающее, заблокирована ли позиция узла.

  • 0
    Спасибо еще раз. Извиняюсь за (я уверен) простые вопросы. Знаете ли вы какие-либо хорошие книги или ресурсы по d3 v4, которые дополняют документацию по API?
  • 0
    Я не видел много на пути книг. Лично я в значительной степени зависел от Mikes bl.ocks (документация по API обычно ссылается на них) в отношении чистых и канонических примеров, с которыми я потом связывался, документации по API, Stackoverflow и вначале я использовал множество объяснений d3noob и Примеры. Одним из важных отличий в ресурсах является то, что вы не смотрите на неправильную версию, поскольку так много по-прежнему использует v3, но пространство имен изменилось в v4 (наряду со значительным количеством других вещей).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню