Ceux qui connaissent l'event "RENDER" de l'objet "Stage", savent que la mise à jour d'un objet et son rendu via cet event est une tache "fastidieuse" car tres répétitive.
Je me suis donc créer une classe qui s'occupe de TOUT.
Ou presque, l'instance a redessiner devant contenir une fonction actualisant le contenu de ce dernier.
Bref, piur les initiés, un bon exemple vaut mieux que des lignes de textes... Ouvrir le SWF.
24 févr. 2009 à 14:58
Avec l'Event.RENDER, le comcept est différent:
Chaque modification de propriété doit entrainer une EXECUTION "STAGE.INVALIDATE()" afin d'aviser celui-ci que l'instance n'est plus à jour Une fois aviser, quand le player actualise l'affichage, avant d'afficher l'instance désirée, il exécute l'écouteur passé lors de "stage.addEventListener("render", MON_ECOUTEUR);
24 févr. 2009 à 14:35
Dans certains cas cela peut s'avérer fort utile (pour des modifications visuelles complexe nécessitant une forte demande CPU).
Comme tu le précise, cela dépend de la façon de penser du développeur.
Certains enchaîneront les modifications à la volée des propriétés (avec 3 ou 4 monDessin.couleur = [...]) tandis que d'autre stockeront la valeur de la propriété dans une variable intermédiaire et appliqueront cette valeur à la propriété seulement à la fin de leur script.
Un évènement intéressant à comprendre donc !
Merci à toi.
24 févr. 2009 à 13:24
Le chapitre sur "Event.RENDER" de mock est vraiement clair sur le principe. La classe moins, et encore moins si t'as pas lu le livre.
En gros: C'est pratique dans le cas de "composants" par exemple. Ou de classe d'objet de dessin, où chaque prorpiété influerait sur l'aspect visuel de l'instance.
Imagine que tu créer une classe de "Dessin".
Cette classe utilisant des props comme :
- Couleur
- Taille
- Filtres
Chaque props influant sur l'aspect visuelle. Dans la plupart des cas (je le faisait avant), chaque modifications des propriétés obligait l'instance à se redessiner. Si je fais "dessin.couleur= 0xFF6600", la modification devait changer la couleur du dessin, et don appeler une fonction de dessin actualisant l'objet. Mais si dans la même frame je fais "dessin.taille= 20", je reapellais la même fonction de dessin, et don l'exécecutait plusieurs foirs dans le Mème interval juste pour que le dessin puisse être modifié en temps réel.
Avec l'Event.RENDER, le comcept est différent:
Chaque modification de propriété doit entrainer une execution de l'Event.RENDER sur le stage afin d'aviser celui-ci que l'instance n'est plus à jour (Ceci ce faisaint a travers "stage.invalidate()".). Une fois aviser, quand le player actualise l'affichage, avant d'afficher l'instance désirée, il exécute l'écouteur passé lors de "stage.addEventListener("render", MON_ECOUTEUR);
Et donc plutot que d'exécuter une fonction "dessin.draw()" à chaque modification de propriété, il exécutera (par exemple) "dessin.draw()" à l'event "Render", et donc une seule fois dans la même frame.
C'est clair ?
C'est pas qu'il ya une facon de l'uliser selon ActionScript et ses régles, mais plus comment l'utilisateur programme. Il peut y avoir des cas de programmeurs qui ne vont jamais en avoir besoin, et d'autre selon leur facon de programmer, quasi toujours.
24 févr. 2009 à 10:32
Une source qui mérite selon moi un peu plus de détail, en particulier sur la question que beaucoup se poseront :
"Dans quel cas l'utilise-t-on ?"
En évitant à tout prix la réponse "As tu lu le livre de Mock ?" qui représente un très grand nombre de page et qui traite de l'ActionScript 2 (d'après le lien de Greamlins7).
Un rapide coup d'oeil à la classe ne m'a pas réellement fait comprendre le cas d'utilisation de cet évènement.
Un petit tour du coté du dictionnaire AS3 non plus.
Merci pour ta contribution,
Blacknight
www.osteres.com
19 févr. 2009 à 12:40
pour ceux que ça interresse le livre est la :
http://books.google.com/books'id=wQlYlMuTbwYC&dq=Essential+Actionscript+2.0&printsec=frontcover&source=bn&hl=en&ei=10OdSfi4EZSIjAftrczDBQ&sa=X&oi=book_result&resnum=6&ct=result#PPP1,M1
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.