Les images au format PNG sont trés pratiques lorsqu'il s'agit d'afficher des formes avec un fond transparent.
Flash sait les importer depuis bien longtemps, mais ne permet pas de détecter les pixels morts de manière automatique! En d'autres termes, si un évenement souris est attaché à un objet qui contient une image transparente, toute la zone de l'image sera prise en compte (transparence inclus).
Le problème a été résolu par MosesSupposes avec sa classe InteractivePNG, en placant un évenement ENTER_FRAME qui détecte les collisions de la souris avec la le canal alpha de l'image! bien vu...
Exemple:
Implémentation:
private function init():void { var l:Loader = new Loader(); var r:URLRequest = new URLRequest("http://www.domain.com/image.png"); l.load(r); l.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); } private function onLoaded(evt:Event):void { var iP:InteractivePNG = new InteractivePNG(); iP.addChild(evt.currentTarget.loader.content); addChild(iP); }
Source de l'exemple: télécharger!




Sympa à connaitre cette class
Welcome on board
Merci!
C’est vrai que c’est bien pratique… et surtout extremement bien codé!
Sympa.
Par contre je m’interroge sur l’enterframe qui est lancé ( pour les objets en mouvement par exemple ). Est ce qu’en dessinnant une fois une shape apres le loading (sur le meme principe de collision ) et mettre l’event sur la shape ne serait pas plus optimisé… a voir..
En fait, si j’ai bien compris la source, l’evenement enterframe sert juste a tracker la position du curseur sur un bitmap crée à partir d’un PNG. C’est donc a priori pas si mal optimisé!
De plus, MosesSupposes n’est pas du genre à liberer son code s’il n’est pas nikel…
Ah ouai cool ça dis dont !
Merci