[Flash] Images avec Xml

Images avec Xml [Flash] - Flash/ActionScript - Programmation

Marsh Posté le 14-04-2007 à 20:14:35    

Bonjour, j'ai un problème. J'aimerais afficher des images les unes à cotées des autres avec du Xml, pour cela j'ai mon fichier xml composé comme ceci :

Code :
  1. <?xml version='1.0' encoding="UTF-8" ?>
  2. <main>
  3. <images>
  4. <web image="bob.jpg" />
  5. <web image="paque.jpg" />
  6. </images>     
  7. </main>


 
Et alors, un code action script comme cela :  

Code :
  1. Fichier_xml = new XML();
  2. Fichier_xml.ignoreWhite = true;
  3. Fichier_xml.load("fichier.xml" );
  4. Fichier_xml.onLoad = function(success)
  5. {
  6.         if (success)
  7.         {
  8.                 x = Fichier_xml.firstChild;
  9.                 i=0;
  10.                 while(x.childNodes[0].childNodes[i] != undefined)
  11.                 {
  12.                         imgUrl = x.childNodes[0].childNodes[i].attributes.image;
  13.                         btn = "image_mc_"+i;
  14.                         this.createEmptyMovieClip(btn, i);
  15.                         btn.loadMovie(imgUrl);
  16.                         btn._x += 250;
  17.                         i++;
  18.                 }
  19.         }
  20.         else
  21.         {
  22.                 texte = "Erreur";
  23.         }
  24. }


 
Le problème c'est que ce code n'affiche rien pourtant le fichier XML est bien chargé (Plusieurs tests)
Pouvez vous m'aider ?
 
 
 
Merci d'avance :).

Reply

Marsh Posté le 14-04-2007 à 20:14:35   

Reply

Marsh Posté le 15-04-2007 à 12:05:54    

le scope du callback onLoad est celui de l'objet appelant, soit Fichier_xml.
 
applique un Delegate pour forcer le scope sur _level0.
 
soit :
 

Code :
  1. import mx.utils.Delegate;
  2. ...
  3. Fichier_xml.onLoad = Delegate.create( this , onXMLLoad );


 
avec onXMLLoad ton callback actuel, déclaré cette fois comme fonction proprement (sur un calque à part, par exemple).
 
les constructions du type :  

Code :
  1. xml.onLoad = function():Void {};
  2. bt.onRelease = function():Void {};


 
sont à proscrire. Ca s'appelle une "déclaration de fonction inline", c'est de l'AS1, et ça bousille le scope. Ces constructions se trouvent dans 95% des tutos que tu trouveras sur le Web, elles se sont généralisées parce qu'elles figurent dans l'aide de Flash sur beaucoup d'exemples. Dans la vraie vie, c'est une technique utilisée à titre exceptionnel pour accélèrer l'écriture du code (genre, pour écrire un exemple sur une page d'aide), mais c'est pas comme ça qu'on fait : on fait des classes, et/ou des Delegate.


Message édité par craps_youpla le 15-04-2007 à 12:10:44
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed