d3.js umschreiben zoom Beispiel in der version4

Drag-and-Drop Beispiel

Ich versuche zu umschreiben, dass ein Teil der in diesem Beispiel oben zu verwenden, in meinem code, speziell dieses Stück:

function centerNode(source) {
        scale = zoomListener.scale();
        x = -source.y0;
        y = -source.x0;
        x = x * scale + viewerWidth / 2;
        y = y * scale + viewerHeight / 2;
        d3.select('g').transition()
            .duration(duration)
            .attr("transform", "translate(" + x + "," + y + ")scale(" + scale + ")");
        zoomListener.scale(scale);
        zoomListener.translate([x, y]);
    }

Jedoch bin ich stecken, da das v4 Paket hat sich ziemlich geändert. Ich schrieb meine zoomListener Funktion

    var zoomListener = d3.zoom()
                 .scaleExtent([0.3,2])
                 .on("zoom", zoomed);

    function zoomed() {
       transform = d3.event.transform;
       console.log(d3.event);
         svg.attr("transform", transform);
    } 

function centerNode(source){
  t = transform;
  console.log(t);
  x = t.x*t.k; //I only want things to be centered vertically
  y = (t.y + -source.x0)*t.k + (viewerHeight)/2 ;
  svg.transition()
     .duration(duration)
     .attr("transform","translate(" + x + "," + y +")scale(" + t.k + ")");

  transform.scale(t.k); //DOES NOT WORK
  transform.translate([x, y]); //DOES NOT WORK

}

und ich weiß, dass nach der doc sich die Dinge verändert haben und die Informationen nicht länger gespeichert werden, was würden meine zoomListener
D3 V4 release-note auf zoom Ich glaube, ich bin nur verwirrt, wie ich bin, angenommen, es zu tun mit der neuen version. Die letzten paar Zeilen meines centerNode-Funktion nicht funktionieren, das hat als Effekt, dass, wenn ich Mitte der Knoten, die das Zoomen und schwenken zurücksetzen...

Jede Anregung?

InformationsquelleAutor Tekill | 2016-07-22
Schreibe einen Kommentar