Bonjours, j'aimerai votre aide concernant un problème que j'ai en AS.
Voila je charge un fichier xml et récupère les données de chaque oeuvres.
Ensuite je charge l'url de l'image pour pouvoir la mettre en fond dans un bouton.
Une fonction est alors appelé pour créer un bouton et mettre cette image en fond de celui-ci.
Je veut conserver dans un vecteur chaque information des oeuvres chargés, je créer donc une instance d'une classe Oeuvres avec en param les information de l'oeuvre extraite du xml.
Or a ce moment là du code, chaque variable auquels j'ai attribués les information de mon oeuvre possède en fait la dernière ligne lu et pas "la ligne courante" comment résoudre ce problème?
Voici mon 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 public function chargementComplet(event:Event):void { var salle:XML = new XML(event.target.data); for each(var oeuvre:XML in salle.murs.mur.oeuvres.oeuvre) { chargeur = new Loader(); chargeur.load(new URLRequest(oeuvre.@vignette)); idOeuvre=oeuvre.@id; nomBouton=oeuvre; typeBouton=oeuvre.@type; imageBouton=oeuvre.@type; artisteBouton:oeuvre.@artiste; chargeur.contentLoaderInfo.addEventListener(Event.COMPLETE, bouttonImgOeuvre); }
Mon xml ressemble à ça:
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 public function bouttonImgOeuvre(event:Event):void { var bitmapData:BitmapData =Bitmap(event.currentTarget.content).bitmapData; var monBouton:Button = new Button(); monBouton.width = event.currentTarget.width; monBouton.height = event.currentTarget.height; monBouton.x = 100; monBouton.y = 200; monBouton.id = idBouton; monBouton.setStyle('skin', null); monBouton.graphics.clear(); monBouton.graphics.beginBitmapFill(bitmapData); monBouton.graphics.drawRoundRect(0, 0, monBouton.width, monBouton.height, 5); monBouton.graphics.endFill(); monBouton.addEventListener(MouseEvent.CLICK,allerOeuvre); Tableau.addChild(monBouton); p=new Oeuvres(0,idOeuvre,typeBouton,nomBouton,artisteBouton,imageBouton); Grille.touteMesOeuvres.push(p); }
J'obtiens alors dans mon vecteur "touteMesOeuvres" pour chacune d mes oeuvres l'id (par exemple ) de la dernière : 5
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 <salle nom= "Bourdon"> <murs> <mur id="mur_1" nom="mur1" texture="mesImages/vignettes/texture_mur1.jpg" hauteur="2"> <oeuvres> <oeuvre id="1" type="peinture" artiste="Charles Le BRUN" oeuvre="mesImages/peinture_test1.jpg" vignette="mesImages/vignettes/peinture_test1.jpg" description="Salles/Bourdon/oeuvre3/desc.txt"> oeuvre3 </oeuvre> <oeuvre id="2" type="peinture" artiste="Sebastien BOURDON" x="10" y="260" oeuvre="mesImages/peinture_test2.jpg" vignette="mesImages/vignettes/peinture_test2.jpg" description="Salles/Bourdon/oeuvre2/desc.txt"> oeuvre2 </oeuvre> <oeuvre id="3" type="peinture" artiste="Sebastien BOURDON" x="10" y="460" oeuvre="mesImages/peinture_test3.jpg" vignette="mesImages/vignettes/peinture_test3.jpg" description="Salles/Bourdon/oeuvre1/desc.txt"> oeuvre1 </oeuvre> </oeuvres> </mur> <mur id="mur_1" nom="mur2" texture="mesImages/vignettes/texture_mur2.jpg" hauteur="2"> <oeuvres> <oeuvre id="4" type="peinture" artiste="je sais pas" x="160" y="10" oeuvre="mesImages/peinture_test1.jpg" vignette="mesImages/vignettes/peinture_test1.jpg" description="Salles/Bourdon/oeuvre4/desc.txt"> oeuvre4 </oeuvre> <oeuvre id="5" type="peinture" artiste="je sais pas" x="360" y="10" oeuvre="mesImages/peinture_test3.jpg" vignette="mesImages/vignettes/peinture_test3.jpg" description="Salles/Bourdon/oeuvre5/desc.txt"> oeuvre5 </oeuvre> </oeuvres> </mur> </murs> </salle>
Pouvez vous m'aider?
Merci
Partager