Existe-t-il une fonction dojo.fx.sleep à utiliser dans une animation dojo.fx.chain?
-
20-08-2019 - |
Question
Je voudrais fadeIn
un noeud sur une seconde. Puis laissez-le pendant 10 secondes. Puis fadeOut
pendant 3 secondes supplémentaires. Une des manières d’enchaîner ce serait comme suit:
dojo.fx.chain([
dojo.fadeIn({node:myNode, duration:1000}), // fading in for 1 second
dojo.fadeIn({node:myNode, duration:10000}), // this does nothing for 10 seconds
dojo.fadeOut({node:myNode, duration:3000}) // fade out for 3 seconds
]).play();
Dans le code précédent, l’étape intermédiaire est une façon très idiote de ne réaliser rien. Existe-t-il une sorte d'animation dojo.fx.sleep
qui ne fait rien pendant un laps de temps spécifié?
La solution
Je ne suis pas un utilisateur de dojo, mais l'idiome commun de JQuery et de Prototype est la propriété delay, qui semble également être présente dans Dojo:
dojo.addOnLoad(function() {
var animationArguments = {
node: “testHeading”,
duration: 1000, // ms to run animation
delay: 250 // ms to stall before playing
};
dojo.fadeOut(animationArguments).play();
});
Autres conseils
Positif, il n’existe pas à ce stade; le seul moyen d'obtenir cet effet est de scinder votre code en sections de pré-sommeil et de post-sommeil, ce que vous avez pratiquement fait ici. La seule chose que je recommanderais, c'est que Dojo fasse le moins possible pendant une durée de 1oooo milliseconde; comme vous l'avez maintenant, la méthode fadeIn () est appelée et, bien que probablement négligeable, elle exécute au moins une instruction conditionnelle (pour vérifier si elle doit ou non modifier l'opacité bien), c’est un peu plus lent que le fait que le script ne fasse rien.