Stopper un Effect.Pulsate

Le 01/11/2011 14:11 | Posté par yoann dans Javascript

Pour un site internet d’artiste, je souhaitais faire patienter les internautes durant le chargement de la page ( réponse php + chargement en cache des images et du javascript ). Je précise « Artiste » car le visuel et l’univers sont des choses de très importantes dans ce milieu, et l’affichage de façon uniforme et instantané du contenu me semblait être primordiale. Effect.Pulsate de la librairie script.aculo.us prend en paramètre le nombre de pulsation ainsi que la durée. Il n’est pas possible de stopper l’animation lorsqu’on le souhaite. Je vous propose ici même ma petite astuce pour contourner ce problème…

Script aculo us

Script aculo us - Librairie Graphique

Script.aculo.us, un framework javascript très puissant qui vous permet de rendre votre application web vivante avec de riches effets ! L’effet qui nous intéresse dans cet article est « Effect.Pulsate« . Son but est de faire « Clignoter » un élément de votre page. Il prend en paramètre le nombre de pulsation ainsi que la durée de l’effet.

 

Durant le chargement de la page, je fais « Clignoter » le logo du site Internet à l’aide de cette fonction. Je lui définie une durée assez longue pour tenir compte des connections bas débit. Lorsque la page est chargée, je souhaite stopper l’animation.

Dans le fichier Effects.js de la librairie Script.aculo.us, après la déclaration de l’objet Effect, j’ajoute l’attribut Stop.

  Stop: {
    Pulsate :new Object()
  },

L’objet Pulsate renseignera l’objet concerné par l’arrêt de l’effet. Ensuite, dans la fonction Effect.Pulsate, on initialise l’attribut Stop.

Effect.Stop.Pulsate[element.id]=false;

Et pour finir, dans ce que retourne la fonction, on ajoute le contrôle suivant

beforeUpdate: function(effect){ if(Effect.Stop.Pulsate[effect.element.id]) effect.cancel(); }

Et voila ! Maintenant, où vous le souhaitez dans votre code, vous pourrez stopper l’évènement en effectuant l’appel suivant :

Effect.Stop.Pulsate['id_de_mon_element']=false;

Dans mon cas, l’appel s’effectuera sur l’évènement window.onload.

Si vous trouvez que j’ai l’art de me compliquer la vie ( ce qui n’est pas impossible ), n’hésitez pas à réagir sur cet article !

 

Vous pouvez suivre tout les commentaires avec le flux RSS 2.0 Vous pouvez laisser un commentaire, ou trackback.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">