2017-10-05 2 views
1

J'utilise la bibliothèque Velocity UI pour l'animation de texte. J'ai enregistré deux effets (Dans & Out, donc il gère la propriété d'affichage), et ils sont en cours d'exécution dans une séquence. Comment puis-je boucler la séquence? J'ai essayé de le déclencher comme une option à la fin de la séquence, mais cela n'a pas fonctionné (car l'exécution de la séquence n'est pas une fonction). J'ai parcouru les réponses ici sur Stack Overflow et sur Github, mais je n'ai pas trouvé de réponse. S'il vous plaît donnez-moi une suggestion ce qui serait un bon moyen de le mettre sur une boucle infinie. Je vous remercie!Boucle Séquence Velocity.js d'effets personnalisés

$.Velocity.RegisterUI("mythingIn", { 
    calls: [ 
     [{ color: "#fff", opacity: 1 }, 0.5], 
     [{ color: "#ffac00" }, 0.5] 
    ] 
}); 

$.Velocity.RegisterUI("mythingOut", { 
    calls: [ 
     [{ opacity: 0 }] 
    ] 
}); 

var a1wordflow1 = [ 
    { e: $('.a1w-1-1'), p: ("mythingIn"), o: { stagger: 70, duration: Math.random()*6000+14000 } }, 
    { e: $('.a1w-1-1'), p: ("mythingOut"), o: { stagger: 70, duration: 800 } }, 
    { e: $('.a1w-1-2'), p: ("mythingIn"), o: { stagger: 70, duration: Math.random()*6000+14000 } }, 
    { e: $('.a1w-1-2'), p: ("mythingOut"), o: { stagger: 70, duration: 800 } }, 
]; 

$.Velocity.RunSequence(a1wordflow1); 
+0

Seriez-vous en mesure de fournir un Codepen ou similaire que nous peut regarder pour voir le résultat de votre code et être en mesure de vous aider à exécuter la boucle? –

+0

Il fonctionne ici sur une page de test, avec les données complètes: [link] (http://www.viragcukor.hu/landing-v1.php). J'ai mis en place un Codepen bientôt. – Helga

+0

Bien, s'il vous plaît commenter lorsque vous avez installé le codepen en cours d'exécution. –

Répondre

1

Tout ce que vous devez faire est de calculer le temps total de votre séquence à l'avance, puis appelez votre séquence dans un appel setInterval.

$.Velocity.RegisterUI("mythingIn", { 
    // ... 
}); 

$.Velocity.RegisterUI("mythingOut", { 
    // ... 
}); 

const rand = Math.random()*6000+14000; 

var a1wordflow1 = [ 
    { e: $('.a1w-1-1'), p: ("mythingIn"), o: { stagger: 70, duration: rand } } , 
    { e: $('.a1w-1-1'), p: ("mythingOut"), o: { stagger: 70, duration: 800 } }, 
    { e: $('.a1w-1-2'), p: ("mythingIn"), o: { stagger: 70, duration: rand } }, 
    { e: $('.a1w-1-2'), p: ("mythingOut"), o: { stagger: 70, duration: 800 } }, 
]; 

let totalTime = 2 * rand + 1600 + maybeSomeOtherTime; 

const interval = setInterval(() => { 
    $.Velocity.RunSequence(a1wordflow1); 
}, totalTime); 

Si vous quelque temps plus tard décider d'arrêter la boucle, vous devez ajouter ce qui suit à votre code pour arrêter la boucle:

clearInterval(interval); 
+0

Merci, cela fonctionne bien. Je voulais avoir des aléas différents pour tous les éléments, mais ce n'est pas un problème, je peux générer et ajouter dans le temps total. En outre, le décalage a également besoin de temps supplémentaire. Merci beaucoup pour votre aide, j'apprécie vraiment! – Helga

+0

Bien sûr, mon plaisir, heureux d'avoir pu aider. –

+1

Juste pour la future référence: entre-temps j'ai aussi compris que l'animation est déjà randomisée par le décalage, car la longueur du texte animé est différente. Tout ce que je devais faire est de définir la durée du premier élément différemment. Merci beaucoup! – Helga