Forums Développement Multimédia

Aller au contenu

XML + Load image dynamic

CODE Actionscript

4 réponses à ce sujet

#1 major68

    Ceinture Orange

  • Members
  • PipPipPip
  • 37 messages

Posté 20 October 2008 - 14:25 PM

bonjour,

Je développe une petit application qui lit les fichiers xml et charge les images par la suite...
Voici le code que j'ai mis en place

Action Script

import flash.display.Sprite;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.display.MovieClip;
import flash.display.Bitmap;

var pHeight:Number = 200;
var pWidth:Number = 200;
var Tab:Array = new Array();
var listLoader:URLLoader = new URLLoader( new URLRequest("filelist.xml") );
var picLoader:Loader = new Loader();
var Compteur:Number=0;
listLoader.addEventListener(Event.COMPLETE, gotList);
var Temp:Number=100;
function gotList(evt:Event):void {
var xmlData:XML = XML(listLoader.data);
var numImages:Number = xmlData.pix.length();

for(var i=0; i<numImages;i++){
Tab[i] = xmlData.pix[i].toString();

}



picLoader.load(new URLRequest(Tab[0]));

listLoader.removeEventListener(Event.COMPLETE, gotList);

}
picLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, gotPic);
function gotPic(evt:Event):void {
var thisBmp:Bitmap = Bitmap(evt.target.content);
thisBmp.x = 0;
thisBmp.y = 0;
var thisWidth:Number = thisBmp.width;
var thisHeight:Number = thisBmp.height;

thisBmp.scaleX = pWidth/thisWidth;
thisBmp.scaleY = pHeight/thisHeight;

clip_mc.image_mc.addChild(thisBmp);
picLoader.unload();

}



var monTimer:Timer = new Timer(0);


monTimer.addEventListener("timer", timedFunction);


monTimer.start();
monTimer.delay = 4000;

function timedFunction(evt:TimerEvent):void{

clip_mc.gotoAndPlay(1);

if(Compteur<Tab.length-1){
Compteur++;
}
else{
Compteur=0;
}

trace(Tab[Compteur]);

picLoader.load(new URLRequest(Tab[Compteur]));

}

Et l'erreur lors de l'exécution:

Action Script

ArgumentError: Error #2025: Le DisplayObject indiqué doit être un enfant de l'appelant.
at flash.display::Loader/unload()
at jardin_fla::MainTimeline/gotPic()




#2 la pieuvre

  • Honoris
  • PipPipPipPipPipPipPipPip
  • 3055 messages

Posté 20 October 2008 - 19:38 PM

salut, je dis ça je dis rien, mais comme c'est un peu bizarre de supprimer un truc qui vient juste d'être charger, je me disais que peut être que quand l'évènement est distribuer le contenu n'est pas encore ajouté au loader, en gros essayes de délayer le unload.

#3 Monz

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 3541 messages

Posté 20 October 2008 - 20:30 PM

Citation (la pieuvre @ Oct 20 2008, 08:38 PM) Voir le message
salut, je dis ça je dis rien, mais comme c'est un peu bizarre de supprimer un truc qui vient juste d'être charger, je me disais que peut être que quand l'évènement est distribuer le contenu n'est pas encore ajouté au loader, en gros essayes de délayer le unload.


Bonsoir,

De plus, ton unload ne sert à rien, vu que tu charges des images et que ton loader ne peut avoir qu'un seul enfant, quand tu recharges une image, la précédente est automatiquement supprimée.icon_wink.gif



#4 Monz

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 3541 messages

Posté 20 October 2008 - 21:09 PM

Citation (monz @ Oct 20 2008, 09:30 PM) Voir le message
Bonsoir,

De plus, ton unload ne sert à rien, vu que tu charges des images et que ton loader ne peut avoir qu'un seul enfant, quand tu recharges une image, la précédente est automatiquement supprimée.icon_wink.gif


Oups. J'avais mal lu ton code...

Tu dois faire le addchild(thisBmp) après le unload. Sinon dans la liste d'affichage, ça cafouille. Ma précédente remarque fonctionne si tu ne récupères pas l'image dans autre chose que le Loader...

#5 major68

    Ceinture Orange

  • Members
  • PipPipPip
  • 37 messages

Posté 21 October 2008 - 07:05 AM

Merci pour vos sollicitations. Ca m'a mis sur la piste. En fait je supprime l'enfant de rang n-1 où n est le rang de l'objet juste ajouté.





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)