2016-07-27 19 views
15

D3 için çok yeni ve genel olarak JS için nispeten yeni. Tıklamada bir daire oluşturmaya çalışıyorum ve bir kez yaratılan bu döngü sonsuza kadar tekrar tekrar titremeye ihtiyaç duyuyor. Şu anda, düzgün bir şekilde oluşturuluyor ve bir kez geçiş yapıyor, ama sonra hata yüzünden bir tür ölüyor.D3 geçiş döngü atması Atanmamış TypeError: t.call bir işlev değil

var shapesAtt = shapes 
    // omitted: assigning fill, position, etc; working as intended 
    .on("click", circleMouseClick); 

function circleMouseClick(d, i) 
{ 
    createPulse(this); 
} 

function createPulse(focusElement) 
{ 
    // takes in "focal circle" element 
    // some things here are hard coded for ease of reading 
    // (i.e. these variables aren't all useless) 

    var focus = d3.select(focusElement); 
    var origR = focus.attr("r"); 
    var origX = focus.attr("cx"); 
    var origY = focus.attr("cy"); 
    var origFill = focus.style("fill"); 

    var strokeColor = "black"; 

    var newG = svgContainer.append("g"); 
    var pulser = newG.append("circle").attr("id", "pulser") 
     .style("fill", "none").style("stroke", strokeColor) 
     .attr("cx", 150).attr("cy", 150) 
     .attr("r", origR) 
     .transition() 
      .duration(2000) 
      .each(pulsate); 
} 

function pulsate() 
{ 
    var pulser = d3.select(this); 
    pulser = pulser 
     .transition().duration(2000) 
      .attr("r", 25) 
      .attr("stroke-width", 50) 
     .transition().duration(2000) 
      .attr("r", 90) 
      .attr("stroke-width", 10) 
     .each("end", pulsate); 
} 

Chrome'da çalıştırırken ben alıyorum hatadır:

Uncaught TypeError: t.call is not a function  d3.v4.min.js:4 

Ben konuyu çekiyor olabilir benim kod bölümünün edilir:

function pulsate() 
{ 
    // ... 
    .each("end", pulsate); 
} 

cevap

28
İşte benim kodudur

Bunun nedeni d3 version4 kullanıyor olmanızdır. böylece, v4 API önemli bir değişiklik olmamıştır:

yerine

// ... 
.on("end", pulsate);//in d3 version 4 

atıfta yapmak

// ... 
.each("end", pulsate);//in d3 version 3 

kullanmanın: Büyü gibi https://github.com/d3/d3-transition#transition_on

+0

İşleri! Çok teşekkürler! – veileddreamer