RENDERDELEGATION: UNE CLASSE SUR L'EVENT.RENDER DU STAGE...

gremlins7 Messages postés 380 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 28 décembre 2009 - 19 févr. 2009 à 11:26
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010 - 24 févr. 2009 à 14:58
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49300-renderdelegation-une-classe-sur-l-event-render-du-stage

top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
24 févr. 2009 à 14:58
CORRECTION:
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);
Blacknight91titi Messages postés 1732 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 9 mars 2015 2
24 févr. 2009 à 14:35
Mmmh ok je comprend beaucoup mieux le concept.

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.
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
24 févr. 2009 à 13:24
Apparement, c'est un event lancer par le stage, pour effectuer un callback avant d'afficher le clip à l'écran.
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.
Blacknight91titi Messages postés 1732 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 9 mars 2015 2
24 févr. 2009 à 10:32
Hello Top30,

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
gremlins7 Messages postés 380 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 28 décembre 2009
19 févr. 2009 à 12:40
top30 Messages postés 1158 Date d'inscription vendredi 21 février 2003 Statut Membre Dernière intervention 6 août 2010
19 févr. 2009 à 12:25
As tu lu le livre de Mock ?
Une grand partie de tes réponses y figure.
gremlins7 Messages postés 380 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 28 décembre 2009
19 févr. 2009 à 11:26
Salut Top30,
Plutôt pas mal et très interressant, je connaissait peu cet event. J'aurais deux/trois questions a te poser du coup :
-dans quel cas precis l'utilise t-on ?
-cela ameliore t-il la vitesse du rendu (c'est ce qui m'interresse de savoir) ?
-si oui, comment quantifier l'amelioration ?

Grems
Rejoignez-nous