У меня есть силовой график D3, который имеет функциональность на tick
. Я заметил, что как только график остановится, функциональность будет потеряна до тех пор, пока она не будет перемещена снова. Мне интересно, как предотвратить это или как всегда есть tick
?Как иметь бесконечный тик?
В качестве примера, у меня есть следующий код
force.on("tick", function() {
link.attr("x1", function(d) { return d.source.x; })
.attr("y1", function(d) { return d.source.y; })
.attr("x2", function(d) { return d.target.x; })
.attr("y2", function(d) { return d.target.y; });
node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
node.style("fill", function(d) { if (d.selected===true) {return "yellow"} else return d.data['color'] }).select("circle").style("stroke", "black");
});
// highlight node on dblclick
function highlight(d) {
if (d.selected == false) {
d.selected = true;
}
else {
d.selected = false;
}
}
Он постоянно проверяет данные элементы узла ли selected
(из JSON) атрибута является истинным или ложным. Если это правда, то он превращает узел в желтый цвет. Я заметил, что как только график по-прежнему остается, и вы дважды щелкните его, он не станет желтым узлом, пока вы снова не сдвинете график.
Основываясь на предоставленной вами информации, я не думаю, что это будет хорошая идея, чтобы сила выполнялась бесконечно (что вы могли бы, контролируя фактор 'alpha', btw). Почему бы вам не перевести вызов на 'node.style (« fill », ...)' на вашу функцию двойного щелчка? Таким образом, анимация может перестать работать с функциональностью обработчика. – altocumulus
Я не уверен, почему я не думал об этом в первую очередь. Благодарю. Я добавил, что 'node.style ...' заполняет функцию 'highlight()', и я думаю, похоже, что у этого есть функциональность того, что мне нужно сделать. Я не могу вспомнить свой процесс мышления, потому что мне нужно поставить его в галочку, так что сейчас это работает. – Joey
Я не могу сказать, так жаль, что это в ответах. Пробовали ли вы вызов force.start(), когда галочка закончилась? Или через определенное время? – thatOneGuy