La Classe BitmapData – Charger une image externe en faire un instantané et effacer l’image chargée dont nous n’avons plus besoin
19 décembre 2008 par Niums dans Action script
La class BitmapData vous permet de travailler avec les data (pixels) de votre image. Elle permet de représenter un objet bitmapData en mémoire. Lorsque vous créez une nouvelle instance de la class , une image vide est stockée en mémoire. Vous pourrez ensuite manipuler ces instances avec divers méthodes de la class bitmapData. La class bitmapData est située dans le package flash.display.
Dans l’exemple donné, cliquez sur l’image pour ajouter un effet biseau.
L’exemple
La source (fla+img)
Ps : pour les actions de tween il vous faut « installer » la librairie de prototypes MC Tween (as1/2) . J’en parle ici
Pour débuter, créons une image bitmap cliquable
// import de la classe
La classe BitmapData accepte 4 arguments :
var myBitmap: BitmapData = new BitmapData (largeur, hauteur, transparence, couleurDeRemplissage);
La taille maximale pour la largeur et la hauteur est de 2880px.
Affichons l’image bitmap
Une instance de la class bitmapData est chargée en mémoire et reste invisible jusqu’à ce que vous décidiez du contraire. Pour afficher l’image, utilisez MovieClip.attachBitmap();
P.S. : il est préférable d’utiliser createEmptyMovieClip pour créer un clip vide dont le seul but sera l’affichage du bitmap. Car le problème de BitmapData est qu’il n’existe aucune méthode permettant de retirer un bitmap à un clip auquel on l’a attaché.
On pourra donc utiliser removeMovieClip(); pour « effacer » le movie clip contenant le bitmap.
conteneur._x = 130;
conteneur._y = 40;
conteneur.attachBitmap(myBitmap,1);
Créons un filtre et appliquons-le au click :
conteneur.onPress = function() {
myBitmap.applyFilter(myBitmap, myBitmap.rectangle, new Point(0, 0), filter);
}
Chargeons maintenant une image externe
// import de la classe
import flash.filters.BevelFilter;
import flash.geom.Point;
Création d’un movie clip qui va contenir le fichier externe :
La classe MovieClipLoader nous permet de savoir si le chargement s’est effectué avec succès
MovieClipLoader.addListener(listener:Object) : enregistre un objet de façon à ce qu’il reçoive des notifications lors d’un appel du gestionnaire d’événements.
mcl.addListener(this)
Charger le fichier externe dans « conteneur » :
Lorsque le fichier est chargé et prêt à être utilisé, l’objet ‘mcl’ appelle la fonction onLoadInit.
function onLoadInit(){
// créons un bitmap en mémoire qui aura la même taille que l’original et dont le fond sera transparent
// J’ai défini la taille du bitmap égale à la moitié de la taille du fichier original
var myBitmap:BitmapData = new BitmapData(conteneur._width/2, conteneur._height/2,true,0×00FFFFFF);
// on prend un instantané de ‘conteneur’ qui contient le fichier chargé
myBitmap.draw(conteneur);
// on crée un movie clip afin d’y dessiner l’instantané
var capture:MovieClip = createEmptyMovieClip("capture", 10) ;
capture._x = 17;
capture._y = 8;
// on colle l’instantané
capture.attachBitmap( myBitmap, 1 ) ;
var filter:BevelFilter = new BevelFilter(5, 45, 0xFFFFFF, .8, 0×000000, .8, 20, 20, 1, 3, "inner", false);
capture.onRelease = function () {
myBitmap.applyFilter(myBitmap, myBitmap.rectangle, new Point(0, 0), filter);
}
//Plus besoin de conteneur, on le retire
conteneur.removeMovieClip();
}
On peut gérer les erreurs ou du moins être au courant des évènements avec : onLoadError
{
// s’il y a eu une erreur pas besoin de ‘conteneur’/
trace("erreur");
conteneur.removeMovieClip()
}
Voilà !
Continuez votre lecture avec
- Article suivant : PCBook AIR ou the world’s biggest envelope
- Article précédent : Musique de pub, quand Bouygues Telecom me fait danser
Articles similaires
- La Classe BitmapData – Image background fullscreen qui se redimensionne proportionellement avec le filtre Smooth
- La Classe BitmapData – un background avec un motif répété et chargement d’images
- Faire un site « fullpage » avec gestion du placement des éléments avec MC Tween
- MC Tween – une classe très pratique pour les tweens
- Afficher masquer une image au dessus d’un flash



