Ich habe den folgenden Code, der, wenn Sie auf den grauen Halbkreis klicken, gibt es zwei Animationen, die passieren, bin ich sehr nah an meinem beabsichtigten Ergebnis, jedoch animiert die Linie Pfadanimation über ein Punkt, aber dieser Punkt scheint sich am Ende zu bewegen, ich möchte, dass er sich um seinen Endpunkt dreht, so dass ich nicht aus dem Kreis herausspringe, in dem der Endpunkt liegt.SVG-Linie über Endpunkt mit Snap.svg animieren
Es ist viel klarer in der jsfiddle zu sehen, was Ich spreche über und das Problem zur Hand.
** Sie haben den grauen Kreis klicken, um die Animation **
console.clear();
var loop = "M31,201.1C16.6,118.8,69.1,40.5,150.7,26c32.5-5.8,64.5-1.6,93.7,14.5c59.1,32.6,88.4,94,77.1,159.1";
var pin = "M180.4,193.3c-1.8,0-3.5-0.9-4.4-2.6c-1.3-2.4-0.5-5.5,2-6.8L309.8,111c2.4-1.3,5.5-0.5,6.8, 2c1.3,2.4,0.5,5.5-2,6.8l-131.8,72.9C182.1,193.1,181.2,193.3,180.4,193.3z";
var circle_svg = "M-224.1,227.9c-5.1,5.1-5.1,13.4,0,18.5s13.4,5.1,18.5,0s5.1-13.4,0-18.5C-210.8,222.8-219,222.8-224.1,227.9z";
var loopLength = Snap.path.getTotalLength(loop);
console.log(loopLength);
var s = Snap();
circle = s.path({
path: loop,
fill: "gray",
stroke: "#c00",
strokeWidth: 0,
strokeLinecap: "round"
});
var g = s.gradient("l(0, 0, 1, 1)#80DFFE-#0CA5EE-#07A3EE");
circleOutline = s.path({
path: Snap.path.getSubpath(loop, 0, 0),
stroke: g,
fillOpacity: 0,
strokeWidth: 0,
strokeLinecap: "round"
});
circle_middle = s.path({
path: circle_svg,
stroke: "#000000",
fill: "#ffffff",
strokeWidth: 5,
});
pin_line = s.path({
path: pin,
fill: "#000000"
});
// +"t"+[translateX,translateY]
circle_middle.attr({
transform: "t" + [400, -65]
});
pin_line.attr({
transform: 'r-170,180,180'
});
circle.click(function(e) {
Snap.animate(0, loopLength,
function(step) { //step function
circleOutline.attr({
path: Snap.path.getSubpath(loop, 0, step),
strokeWidth: 25
});
}, // end of step function
800 //duration
); //Snap.animate
pin_line.animate({
transform: 'r30,180,180',
translate: '20, 20, 85, 85'
}, 1000);
}); //click the circle
svg {
height: 300px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js"></script>
I _think_ es ist nur, dass Ihre Pin-, Loop- und Circle-Pfade keinen Mittelpunkt teilen (d. H. Ich glaube nicht, dass das Problem der Fehler des Codes ist, der sie animiert). –
Hmm, @maxStarkenburg Ich kann das Svg-Original in Skizze bearbeiten, ist das der richtige Ort, um damit zu beginnen, hast du eine vorgeschlagene Lösung? –
Ja, ich habe nur an Sachen in Illustrator gearbeitet, von denen ich weiß, dass sie Ausrichtungswerkzeuge haben. Ich habe Sketch vorher noch nicht verwendet, aber ich würde denken, dass die Ausrichtung in jedem Vektor-Bild-Editor ein ziemlich einfaches Werkzeug wäre. –