Bonjour à tous,

Voilà un petit mois que je me forme à FLASH, avec l'AS3 (je n'ai pas connu as1 ni as2).

Et me voilà confronter à une question assez simple.

Lorsque je charge via un loader, une image jpg ou png :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
var monLoader:Loader = new Loader();
var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo;
 
monLoader.load(new URLRequest("monImage.png"));
Si je veux copier mon image chargée dans un nouveau movieClip

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
var monLoader:Loader = new Loader();
var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo;
 
monLoader.load(new URLRequest("monImage.png"));
 
var monMC:MovieClip = new MovieClip();
monMC = monLoaderInfo.content;
Cela soulève une erreur, qui indique qu'il y a un problème de type entre Bitmap et MovieClip.

Mais je souhaiterai tout de même travailler avec cette image.
Car Si je crée un objet Sprite ou Bitmap
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
var monLoader:Loader = new Loader();
var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo;
 
monLoader.load(new URLRequest("monImage.png"));
 
var monBitmap:Bitmap= new Bitmap();
monBitmap = monLoaderInfo.content;
Cela fonctionne, mais je suis incapable de travailler sur mon "monBitmap" en tant qu'objet (movieclip) par exemple,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
var monLoader:Loader = new Loader();
var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo;
 
monLoader.load(new URLRequest("monImage.png"));
 
var monBitmap:Bitmap = new Bitmap();
monBitmap = monLoaderInfo.content;
 
var unExemple:Shape = new Shape();
 
monBitmap.addChild(unExemple);
Cela ne marchera pas, car on ne peut ajouter un enfant à un objet de type Bitmap

Donc pour palier à ce problème, la solution est simple :

Pourquoi essayer de recuperer l'objet Bitemap alors qu'on peut se servir du Loader directement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
var monLoader:Loader = new Loader();
var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo;
 
monLoader.load(new URLRequest("monImage.png"));
//unExemple est un shape crée juste avant
monLoader.addChild(unExemple)
Çela fonctionnerai très bien, car l'objet Loader hérite de tel façon :
Loader => DisplayObjectContainer => InteractiveObject => DisplayObject => EventDispatcher => Object


Donc ma question au final est (Roulement de tambours !!!!) :

Est ce "mauvais" de travailler avec les loaders directement, ou est ce que je suis le seul à me prendre la tête à ce point ?

Car pour l'instant, pour chaque loader que je crée, je copie le bitemap dans un autre objet, et je détruit en faisant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
monLoader.unload();
monLoader = null;
Pour que lorsque le ramasse miette passera, il ne restera plus rien ^^.

Merci de vos réponses constructives

Bonne après midi à tous !

Si vous avez des questions