2013-07-16 16 views
6

Używam układu sił D3 do porządkowania wykresu sieciowego i wszystko działa sprawnie.Jak stwierdzić, kiedy układ sił D3 został zatrzymany?

Jednak chcę dodać przycisk do mojego interfejsu użytkownika, aby użytkownik mógł odtwarzać/wstrzymywać proces układania w dowolnym momencie: chciałbym mieć przycisk przełącznika, który odzwierciedla obecny stan układu: czy to jest obliczanie lub nie (d3 automatycznie przerwie obliczanie po ustabilizowaniu się układu). Czy istnieje sposób na określenie, kiedy obliczanie układu sił zostało zakończone i rozpoczęte? Spodziewałem się jakiegoś wydarzenia, żeby sobie z tym poradzić, ale nie mogłem go znaleźć.

Odpowiedz

1

Tak naprawdę nie ma pojęcia "zatrzymania" obliczania układu. Nawet jeśli wydaje się, że jest nieruchomy, wciąż mogą występować drobne zmiany. Możesz sprawdzić wartość alpha i zinterpretować ją jako zatrzymaną, jeśli spadnie poniżej progu. W takim przypadku można ustawić wartość ujemną, która wyraźnie zatrzyma układ. Nie ma określonego zdarzenia, ale możesz sprawdzić swój stan w module obsługi zdarzeń tick.

+1

Cześć, Lars. Odbiornik zdarzeń "koniec" jest dostępny od wersji v2.8.0. (rel 24 lutego 2012 r.). jsFiddle: http://jsfiddle.net/zschuessler/gRqv3/ –

+0

Dobry połów! Wciąż może być bezpieczniej sprawdzać również alfę, ponieważ to zajmuje bardzo dużo czasu, aby faktycznie wyzerować. –

9

Użyj zdarzenia end udokumentowanego na .

d3.layout.force() 
    .on('end', function() { console.log('ended!'); }); 

jsFiddle: http://jsfiddle.net/zschuessler/gRqv3/ | Zobacz konsolę, aby zobaczyć słuchaczy w akcji.

Powiązane problemy