Hallo allerseits das ist Code, mit dem ich schon gearbeitet habe. Es bewegt ein Objekt von A nach B. Ich versuche mehrere Punkte zu haben, auf die es sich bewegen würde. Also von der Startposition A -> B, dann von B -> C und so weiter. Vielleicht haben Sie eine Variable, die Sätze von Koordinaten enthalten würde, die in einige animierte Funktionen als Parameter eingegeben würden. Aber alles, was ich versuchte, resultierte nur in der Ausführung des letzten Befehls, also würde es sich direkt von A -> C bewegen und B ignorieren. Jeder Rat/jede Demo wird geschätzt.Fabric.js animieren Objekt/Bild
Javascript
var canvas = new fabric.Canvas('scene', { backgroundColor: 'green'});
var triangle = new fabric.Triangle({
width: 30
, height: 30
, fill: 'red'
, left: 30
, top: 0
});
canvas.add(triangle);
function animateTop() {
triangle.animate('top', '+=55', {
duration: 1000,
onChange: canvas.renderAll.bind(canvas)
});
}
function animateLeft() {
triangle.animate('left', '+=100', {
duration: 1000,
onChange: canvas.renderAll.bind(canvas)
});
}
function fireAnimation() {
animateTop();
animateLeft();
}
document.onreadystatechange = function() {
if (document.readyState == "complete") {
fireAnimation();
}
}
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
<script src="http://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.4.0/fabric.min.js"></script>
</head>
<body>
<canvas id="scene" width="400" height="400" />
</body>
</html>
+1 für die Liste. @ Yondaru, ich empfehle Ihnen, in State-Maschinen zu schauen, sie sind der beste Ansatz für die Handhabung von Animationssequenzen. –
@nickvans, Vielen Dank, funktioniert wie Charme. Und könntest du mir vielleicht sagen, was du tun würdest, wenn du einen Bild-Uploader für diese Leinwand hättest und du würdest jedem der hochgeladenen Bilder eine Liste von Befehlen zuweisen? – Yondaru
Zuerst fügen Sie jedem animationQueue-Objekt ein zusätzliches Attribut hinzu, das das Fabric-Objekt für das Bild speichert, sobald Sie es erstellt haben. '{" fabricShape ": newlyAddedShape," left ":" + = 0 ", ...' Ändere die Closure-Funktion so, dass 'animationDefinition.newlyAddedShape' anstelle von' triangle' verwendet wird. Im abgeschlossenen Event für deinen Uploader (das Event wird ausgelöst wenn Der Upload ist erfolgreich. Erstellen Sie einfach eine neue animationQue-Liste für dieses Objekt und übergeben Sie sie an die startAnimationQueue-Funktion. – nickvans