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é?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top