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 :
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 var monLoader:Loader = new Loader(); var monLoaderInfo:LoaderInfo = monLoader.contentLoaderInfo; monLoader.load(new URLRequest("monImage.png"));
Cela soulève une erreur, qui indique qu'il y a un problème de type entre Bitmap et 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;
Mais je souhaiterai tout de même travailler avec cette image.
Car Si je crée un objet Sprite ou Bitmap
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 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 ne marchera pas, car on ne peut ajouter un enfant à un objet de type Bitmap
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);
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 :
Çela fonctionnerai très bien, car l'objet Loader hérite de tel façon :
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)
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
Pour que lorsque le ramasse miette passera, il ne restera plus rien ^^.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 monLoader.unload(); monLoader = null;
Merci de vos réponses constructives
Bonne après midi à tous !
Si vous avez des questions![]()
Partager