2014-02-13 6 views
2

Я использую d3.js. Но я не могу понять , как force.tick выполняет (т. Е. Неявно или явно). Попробуйте дать представление о порядке выполнения запуска, тика и окончания. Каково использование и влияние этих событий? Кроме того, когда я использую что-то вроде этого:Порядок выполнения D3JS начала установки Force, галочка

force.start(); 
for (var i = 0; i < n; ++i) force.tick(); 
force.stop(); 

Как это создает статическое изображение?

P.S: Это первый раз, когда я задаю вопрос. Пожалуйста, сообщите, если что-то против руководства.

Пример программы:

var k=0; 
    force.on("tick",tick); 
    force.start();//now tick will execute until the alpha lowers to the threshold value 
    function tick() 
    { 
    k++; 
    } 

конечное значение «к» зависит, как долго альфа превышает пороговое значение.

Теперь предположим,

var k=0; 
force.on("tick",tick); 
force.start();//now tick will execute until the alpha lowers to the threshold value 
for(var i=0;i<100;i++) 
force.tick(); 
force.stop(); 
function tick() 
{ 
k++; 
} 

Теперь я получаю значение «к» «100»

В первом случае клещ() был вызывался неявно, но теперь, когда она вызывается явно как изменяется порядок выполнения.

расположение

ответ

4

Сила работает так:

  • .start() запускает моделирование. Прежде чем он будет вызван, ничего не происходит.
  • .tick() продвигает симуляцию одним шагом. То есть силы на узлах вычисляются и их позиции основаны на этих силах.
  • .stop() останавливает симуляцию. Ничего не происходит после его вызова.

Способ, которым вы опубликовали статический макет, заключается в том, что симуляция запускается на несколько этапов времени (n), а затем остановлена. Обычно .stop() не вызывается явно, поэтому симуляция никогда не прекращается, а просто переходит в состояние равновесия, в котором ни один узел не перемещается.

Итак, чтобы повторить - начинается симуляция, запустите для n шагов и остановился. Все это происходит до отображения страницы, поэтому вы ничего не видите. Если вы увеличиваете значение n до очень большого значения, вы должны заметить задержку до отображения страницы.

+0

так что «старт» вызывает «тик» неявно. если да, то какая разница, когда мы называем «тик» явно? –

+0

Симуляция вызывает '.tick()', а не '.start()' непосредственно. Если вы вызываете это явно, вы явно продвигаете симуляцию на один шаг. Вы можете думать об этом как о счетчике, который увеличивается каждый раз или около того, но вы также можете явно увеличивать его. –

+0

Я уточнил вопрос, чтобы указать, что я пытаюсь задать. Пожалуйста, проверьте. –