[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
11
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'