IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Galerie d'images XML/AS3 (problème de for each)


Sujet :

ActionScript 3

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Galerie d'images XML/AS3 (problème de for each)
    Bonjour,
    je suis en train de construire une galerie d'images dont l'adresse est dans un fichier XML dont voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    package classes{
     
    	import flash.media.*;
    	import flash.net.URLRequest;
    	import flash.net.URLLoader;
    	import flash.display.MovieClip;
    	import flash.events.*;
    	import flash.utils.Timer;
    	import flash.text.*;
    	import fl.containers.UILoader;
    	import flash.display.Loader;
    	public class Diapo extends MovieClip {
     
    		private var monXML:XML;
    		private var uiload:UILoader = new UILoader();
    		private namespace xmlns="http://xspf.org/ns/0/";
    		private var images:Array = new Array();
    		private var img_tmb:imgTmb;
    		private var  imageLoader:Loader;
    		public function Diapo(){
    			var chargeur:URLLoader = new URLLoader ();
    			var adresse:URLRequest = new URLRequest ("xml.xml");
    			chargeur.load(adresse);
    			chargeur.addEventListener(Event.COMPLETE, fichierXML);
     
    		}
     
    	public function fichierXML(evt:Event):void{
    			this.monXML = new XML(evt.target.data);
    			var i:Number =0;
    			use namespace xmlns;			
    			for each(var menu:XML in this.monXML..page){
    			images[i]=(monXML..page[2].photo[i]);
    			i++;
    			}
    			for (var j= 0; j<images.length; j++) {
    				var url:String = "img/tmb/";
    				trace(images[j]);
    				imageLoader  =  new Loader();
    				imageLoader.load(new URLRequest(url+images[j]));
    				imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
    				img_tmba.y = 7;
    				img_tmba.x = j*80;
    				}
     
     
    		}
    		function  imageLoaded(e:Event):void  {
                             trace("a");
    			img_tmba.addChild(imageLoader);
     
    		} 
     
    	}
     
    }
    mon problème est qu'une seule image n'apparait au final.
    grâce au trace(images[j]), j'ai pu voir que l'adresse des images était correcte.
    J'ai fait un trace("a") dans la fonction imageLoaded et le programme rentre effectivement dans la fonction.

    les 2 traces combinés rendent ca:
    1.jpg
    2.jpg
    3.jpg
    4.jpg
    5.jpg
    a
    a
    a
    a
    a
    Comme si le for each allait bien plus vite que l'autre fonction et "écrasait" son résultat à chaque fois. Il me faudrait donc un moyen de les faire marcher chacunes leur tour, est-ce possible?

    merci

    kevin

  2. #2
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 70
    Points : 80
    Points
    80
    Par défaut
    Tu ecrase les valeurs de ton imageLoader. Fait un tableau de loader, un loader par image, cela devrait peut etre marcher ...

  3. #3
    Membre confirmé Avatar de IP-Fix
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    421
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 421
    Points : 494
    Points
    494
    Par défaut
    Plutot qu'un tableau de loader qui est pas optimisé niveau mémoire ( apres on va encore dire que les dev flash code avec leur pied >< ), je te conseil de faire ça :

    - Tu remplis ton tableau d'image comme tu le fais deja.
    - Tu lance une fonction de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    load_full(){
         if( images.lenght > 0 ){
                var url:String = "img/tmb/";
                imageLoader  =  new Loader();
    	    imageLoader.load(new URLRequest(url+images.pop() ));
    	    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
    	    img_tmba.y = 7;
    	    img_tmba.x = (images.lenght+1)*80;
         }
         else
                dispatchEvent(new Event(Event.COMPLETE)); //optionnel
    }
    Cette fonction dispatch un event complete donc tu peux mettre un ecouteur sur ton objet Diapo. tu modifie légérement imageLoaded :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function  imageLoaded(e:Event):void  {
    	img_tmba.addChild((imageLoader.content as Bitmap).copy());
            load_full();
    }
    C'est écris a la volé , il y a peut etre une erreur mais sa t'evite d'utiliser un max de loader là ou un fait bien le boulot

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    ok je pige ce que tu veux dire!
    merci pour vos réponses!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML/XSL]problème avec for-each
    Par mavina dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/06/2006, 16h28
  2. Problème bouclage 'for-each'
    Par Taildan dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/02/2006, 16h48
  3. [XSLT]problème avec for-each incompréhensible
    Par trotters213 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 21/02/2006, 11h31
  4. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 22h38
  5. [VB.NET] Problème avec For Each...
    Par cyrcroix dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/06/2005, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo