Effet de désintégration en AS3 via Bitmap et BitmapData

7th mai, 2009 par Floz

J’avais une petite idée de transition pendant le développement de mon portfolio floz.fr en as3. Cette idée m’était venu d’un travail de André Michelle, sur des effets d’explosion via des manipulations sur des objets BitmapData. Il utilise notamment les méthodes getPixel() et setPixel() de BitmapData au lieu de passer par des tweens et donc de sauver des performances.

En effet, dans mon effet de désintégration (pour le moment nommé “Rain” et “RainBack”), je manipule tous les pixels de l’image afin de les faire tomber. Une sorte de pluie de pixel :

This movie requires Flash Player 9

Sur des petites images, c’est fluide sans problème. Mais plus l’image sera grande, et plus les performances chuteront. Ainsi, l’effet est à utiliser avec plus ou moins de modération en fonction de l’image sur lequel on l’applique !

Les classes sont dispos sur le google code du package minuit4, et dans un .rar les contenant. Les classes sont fonctionnelles, mais sont encore sujettes à des modifications. Non pas dans leur fonctionnement en soit, mais plutôt dans l’instanciation. Je pense les réorienter vers un fonctionnement similaire à tweenlite. A suivre !

Un petit exemple d’utilisation :

import fr.minuit4.animation.rain.Rain;

var r:Rain = new Rain( new Icone( 0, 0 ) ); // Icone correspond à un DisplayObject dispo dans la bibliothèque de flash.

r.addEventListener( Event.COMPLETE, onComplete );

addChild( r );

r.start();

Et l’effet sur une image plus grosse, avec l’outil de contrôle des FPS du package minuit4 afin vérifier les performances de l’application. Cliquez sur la scène pour lancer l’effet.

This movie requires Flash Player 9

Grosse mise à jour au niveau des performances ici.

2 Commentaires pour “Effet de désintégration en AS3 via Bitmap et BitmapData”

  1. [...] Bossant sur un projet en parallèle, je commencais à réfléchir en terme de réorganisation de code. Et c’est là que j’en suis revenu à ces histoires de Pool (j’en parlerai dans un autre post, je n’ai pas encore assez fouillé là dessus) et de LinkedList. Du coup, je me suis dis que j’allais tenter de les utiliser au sein de mon effet de désintégration. [...]

  2. mgraph dit :

    hi, good work i like it, i just have a question how can i restart this effect whene the effect is complete
    ____r.start();___
    i try r.restart() but it doesn’t work

Laisser un commentaire