[AS3 - CS4] CLASSE EFFET HDR GLOW

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 30 avril 2009 à 23:28
cs_mnem0 Messages postés 3 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 29 septembre 2009 - 29 sept. 2009 à 19:57
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/49949-as3-cs4-classe-effet-hdr-glow

cs_mnem0 Messages postés 3 Date d'inscription mercredi 10 mars 2004 Statut Membre Dernière intervention 29 septembre 2009
29 sept. 2009 à 19:57
Très bel effet et très pratique. Cela dit, si j'applique une interpolation de mouvement sur l'objet cible du HDRGlow, j'obtiens une erreur :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
l'erreur porte sur var mat2:Matrix=context.getChildAt(i).transform.matrix;

pourtant, mon code as est simpliste :

import classes.stefbuetFX.HDRGlow;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.filters.GlowFilter;
var HDR:HDRGlow=new HDRGlow(rect);
addChild(HDR);

Quelqu'un serait il en mesure de m'aider ?
artkabis Messages postés 30 Date d'inscription samedi 10 mai 2008 Statut Membre Dernière intervention 25 février 2010
29 juil. 2009 à 02:52
Après avoir regardé longuement les sources, je dois dire que c'est plutôt du beau travail, l'effet est bien sûr réussi, mais c'est plutôt le code qui m'a impressionné. En tout cas le résultat est concluent et la manière pour y arriver est franchement convaincante. Bien joué !!!
Mansuz Messages postés 169 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 25 janvier 2014 1
1 mai 2009 à 19:55
Super rendu ! Bonne source.
stefbuet Messages postés 576 Date d'inscription mercredi 5 janvier 2005 Statut Membre Dernière intervention 12 mai 2009
1 mai 2009 à 02:02
Salut,

Ouf, j'ai enfin réussi à trouver une solution pour palier aux problèmes de crénelage! J'ai aussi corrigé l'erreur dans la classe Exemple01 et changé la méthode d'affichage de l'effet. En effet simplement utiliser l'evenement MOUSE_MOVE au lieu de ENTER_FRAME n'aurait rien changé car l'objet HDRGlow s'update automatiquement via ENTER_FRAME. J'ai donc utilisé la fonction drawHDRGlow static sans utiliser le reste de la classe HDRGlow (technique détaillé dans la doc de la classe) et ainsi je n'appel cette fonction qui calcul l'effet uniquement lors des evenements MOUSE_MOVE et la il y a bcp moins de calculs effectués!

Stef.
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
30 avril 2009 à 23:28
Effet très sympa, mais juste quelques remarques/conseils :

- il y a des erreurs dans Exemple01.as : il faut changer "public function Exemple00()" par "public function Exemple01()" pour que ça foncitonne
- L'EnterFrame est trop "bouffe-source" et n'utilise pas les capacités réelle de la machine, le mieux est de le remplacer par un MOUSE_MOVE sur le stage et d'ajouter "e.updateAfterEvent()" à la fin de la fonction "update". Par contre, tu perds le calcul de frameRate ...
- Il est dommage de voir cet effet de crénelage moche sur les surfaces non planes vectorielles. J'ai testé avec un gif transparent (sans % d'alpha) et ça passe nickel, par contre il y a des erreurs d'approximations sur les png avec dégradés alpha.

Un premier jet très prometteur, mais quelques réglages fins à faire ...

Peg'
Rejoignez-nous