2013-12-16 2 views
1

Как я могу сделать узлы силовой магии d3.js, которые исправили: true становятся незафиксированными?Сделать фиксированный узел в d3.js нефиксированным

Если я установил их в d.fixed = false, это не сработает.

У меня есть код, похожий на http://bl.ocks.org/norrs/2883411 working. Таким образом, он устанавливает d.fixed = true при перетаскивании.

Оценка d.fixed как Boolean, похоже, тоже не работает.

Но я хотел бы также иметь возможность блокировать узлы.

Либо на перетаскивании, либо через какую-либо другую функцию.

Im пытается это:

if (d.fixed==false) { 
     d.fixed=true; 
     d3.select(this).classed("fixed", true); 
} 
else 
{ 
     d.fixed = false; 
     d3.select(this).classed("fixed", false); 
} 

The плохие результаты можно увидеть на этой скрипке: http://jsfiddle.net/2u5KB/2/

Спасибо, Гарет.

+0

Установка 'fixed' на' false' должна работать. Не могли бы вы разместить полный пример, который иллюстрирует проблему, пожалуйста? –

+0

Попробуйте вызвать force.resume() после изменения свойств узла. –

+0

На самом деле вам может потребоваться вызвать [force.start()] (https://github.com/mbostock/d3/wiki/Force-Layout#wiki-start). –

ответ

1

OK Я разработал свою проблему.

Я делал чек и менял на d.fixed в dragstart метод.

Перемещение кода на dragend метод разрешил проблему.

Я думаю, что у dragstart есть другое поведение, которое я ожидал