Non so se è possibile utilizzare la funzione di animazione incorporata nel tessuto perché, come dici tu, questi oggetti potrebbero spostarsi. Ma si può fare qualcosa di simile abbastanza facilmente manualmente utilizzando un po 'di matematica:
si potrebbe fare questo trattandola come un'oscillazione d'onda tra 0 e 1. La formula corretta per questa funzione è:
- Quando "angolo" è 0, o un multiplo di 2π l'ampiezza è 0, in modo che la palla è al centro di object1
- Quando il "ang Le" è un multiplo di π, l'ampiezza è 1 e la palla è al centro di object2
- Quando l'ampiezza è di 0,5, la palla è tra i due oggetti
Si può solo aumentare l'angolo a base di il tempo, in qualsiasi periodo o durata tu voglia.
var animateBallBetweenObjects = function (obj1, obj2) {
// Add the "ball"
var circle = new fabric.Circle({
radius: 10,
fill: 'blue',
left: obj1.getCenterPoint().x,
top: obj1.getCenterPoint().y,
originX: 'center',
originY: 'middle',
selectable: false
});
canvas.add(circle);
var period = 1000;
var amplitude = 0;
var angle = 0;
var prevTime = Date.now();
var loop = function() {
// Calculate the new amplitude
var now = Date.now();
var elapsed = now - prevTime;
prevTime = now;
angle += Math.PI * (elapsed/(period * 0.5));
amplitude = 0.5 * (Math.sin(angle - (0.5 * Math.PI)) + 1);
// Set the new position
var obj1Center = obj1.getCenterPoint();
var obj2Center = obj2.getCenterPoint();
circle.setLeft(obj1Center.x + (amplitude * (obj2Center.x - obj1Center.x)));
circle.setTop(obj1Center.y + (amplitude * (obj2Center.y - obj1Center.y)));
canvas.renderAll();
requestAnimationFrame(loop);
}
// Animate as fast as possible
requestAnimationFrame(loop);
};
FIDDLE con esso qui.
fonte
2015-09-22 19:29:46
Quindi, in pratica, dire dopo aver creato la forma padre e la forma figlio. Mi stavo chiedendo se sia possibile creare una funzione di animazione che vorremmo dirci di selezionare genitore e figlio. Quindi, per esempio, puoi avere molti genitori genitore sulla tela e quando fai clic su crea animazione puoi specificare quale figlio genitore vuoi aggiungere anche l'animazione. – user1010101
Quello che hai postato è molto vicino a quello che stavo cercando. Ho intenzione di giocarci un po 'e assicurarmi che io – user1010101
@ user1010101 non sono sicuro di aver capito la tua domanda. Stai chiedendo se puoi avere più di una di queste animazioni alla volta? La risposta è sì, puoi averne quante vuoi: https://mattharrison.s3.amazonaws.com/stackoverflow/animation.gif –