Stopper un Effect.Pulsate
Le 01/11/2011 14:11 | Posté par dans JavascriptPour 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, 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.

