2013-01-18 14 views

cevap

6

düzen yakınsar, force.alpha() 0'a ayarlı değil çok sık (bunun için anket için zamanlayıcı kurun olacak!) ve bittiğinde anlayacaksın.

Bu örnek, düzen duruncaya kadar her interval milisaniyeyi tekrar denemelidir. timer değişkeni, mevcut zamanlayıcıyı koruyarak, düzeni daha fazla tamamlamak için beklemek istemiyorsanız sıfırlayabilirsiniz. düzen bittiğinde the documentation itibaren

var timer = null; 
function onCompletion(force, callback, interval) { 
    interval = interval || 300; 

    function retryIfRunning() { 
     if (force.alpha() != 0) 
      timer = setTimeout(checkAndRetry, interval); 
     else { 
      timer = null; 
      callback(); 
     } 
    } 

    retryIfRunning(); 
} 
2

bunu yerleştirerek düğümlerle yapılıyor olarak kabul ettiğinize bağlıdır gibi bir özelliği inşa olarak mümkün değildir. İşin yolu, sahip olduğunuz grafiğin boyutuna ve istediğiniz hassasiyete bağlı olarak n ile n işlevini n kez çağırmaktır.

# force.tick(): Kuvvet düzeni simülasyonunu bir adım çalıştırır.

Ben Daha fazla bilgi almak isterseniz force.tick() belgeleri okumaya teşvik: https://github.com/mbostock/d3/wiki/Force-Layout#wiki-tick

13

, end olay, yani zaman force.alpha === 0 gönderilir.

force 
    .nodes(yourNodes) 
    .links(yourLinks) 
    .on('tick', function() { 
    // layout is in progress 
    }) 
    .on('end', function() { 
    // layout is done 
    callback(); 
    }); 
+1

Bu kabul çözümü sonra yolu kısadır: onunla bitince

Yani öğrenebilirsiniz! @TO belki de iktidarı değiştirebilir mi? – kwoxer

İlgili konular