Nicht leisten können Pfade zeichnen Sie wächst langsam, mit D3
Über die d3-Grafik-Bibliothek, ich kann nicht scheinen, um Pfade zu zeichnen langsam, so dass Sie gesehen werden kann, wächst.
Diese Website hat ein perfektes Beispiel in der "Line Chart (Abrollen)" Abschnitt, aber kein code angegeben ist für diesen Abschnitt. Könnte mir bitte jemand helfen mit den Linien der D3 code konnte das passieren?
Wenn ich versuche Anhängen delay() oder die Dauer() wie im folgenden code-snippet, der Weg zieht immer noch sofort, Und alle in der SVG-code nach diesem segment fehl zu erbringen.
var mpath = svg.append ('path');
mpath.attr ('d', 'M35 48 L22 48 L22 35 L22 22 L35 22 L35 35 L48 35 L48 48')
.attr ('fill', 'none')
.attr ('stroke', 'blue')
.duration (1000);
InformationsquelleAutor der Frage tgoneil | 2012-11-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Glaube ich, dass die "D3-Weg", dies zu tun ist mit einem custom-tween-Funktion. Sie können sehen, eine funktionierende implementation hier: http://jsfiddle.net/nrabinowitz/XytnD/
Vorausgesetzt, Sie haben einen generator genannt
line
mitd3.svg.line
zur Berechnung der Pfad:Den
pathTween
Funktion hier gibt ein interpolator, der nimmt eine bestimmte Scheibe von der Linie, definiert durch, wie weit wir sind durch den übergang, und aktualisiert den Pfad entsprechend an.Lohnt es sich anzumerken, dass ich vermute, Sie würden eine bessere Leistung und eine flüssigere animation durch, die den einfachen Weg: legen Sie ein weißes Rechteck (wenn Ihr hintergrund ist einfach) oder eine
clipPath
(wenn Ihr hintergrund ist Komplex) über die Linie, und übergang zu Recht, zeigen die Linie darunter.InformationsquelleAutor der Antwort nrabinowitz
Einem gemeinsamen Muster beim animieren von Linien in svg ist eine Einstellung
stroke-dasharray
von der Länge des Pfads und dann animierenstroke-dashoffset
:Sehen Sie eine demo hier:
http://bl.ocks.org/4063326
InformationsquelleAutor der Antwort Duopixel
Basiert auf dem post verlinkt, ich kam mit dem folgenden Beispiel:
Es ist ein bisschen hässlich, aber funktioniert. Man kann es auf jsFiddle
InformationsquelleAutor der Antwort btel