afficher plusieur image dans un sprite en as3

afficher plusieur image dans un sprite en as3 - Flash/ActionScript - Programmation

Marsh Posté le 26-01-2010 à 19:11:31    

bonjour !
 
je souhaite créer un portefolio en AS3 pour cela j'ai créée 3 bouton qui appelle chacun  une image qui s'affiche dans un sprite.
mais mon problème est que je veut veux que l'image du premier bouton charger dans le sprite disparaisse quand je charge l'image 2 du bouton 2.
car pour l'instant les image font que s'accumuler les une sur les autre et ca fait pas très jolie :/
 
 
(je précise je suis une débutante en AS3  )

Reply

Marsh Posté le 26-01-2010 à 19:11:31   

Reply

Marsh Posté le 26-01-2010 à 19:32:21    

Comment tu appeles tes images ?
Si tu passe par un Loader, tu n'aura pas ce problème...
 
Sinon, avant d'ajouter l'image au sprite, tu peux supprimer tout les enfant de ce dernier...


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 26-01-2010 à 20:48:16    

je passe justement par un Loader ...
en gros lorsque je clic sur mon bouton je fais appelle a un Loader qui charge mon image l'aide d'un écouteur dans le sprite .
 
voici le code
 

Code :
  1. //donc ici je déclare mon sprite qui va contenir mes images
  2. var conteneur: Sprite =new Sprite();
  3. conteneur.scaleX=conteneur.scaleY=0.7;
  4. conteneur.x=50;
  5. conteneur.y=40;
  6. //déclare bouton1
  7. var bonton1:Bouton1 = new Bouton1();
  8. bonton1.x = bonton1.y =150;
  9. this.addChild (bonton1);
  10. //declare image1  
  11. var chargement1 :Loader = new Loader ();
  12. var adressel1 :URLRequest = new URLRequest ("image/imagearsenal1.jpg" );
  13. chargement1.load(adresse1);
  14. //declare bouton2
  15. var bouton2:Bouton2 = new Bouton2();
  16. bouton2.x = bouton2.y =150;
  17. this.addChild (bonton2);
  18. //declare image2  
  19. var chargement2 :Loader = new Loader ();
  20. var adresse2 :URLRequest = new URLRequest ("image/imagearsenal2.jpg" );
  21. chargement2.load(adresse2);
  22. //écouteur bouton1
  23. bouton1.addEventListener (MouseEvent.MOUSE_DOWN,aparaitre1);
  24. function aparaitre1 (evenement: Event): void
  25. {
  26. conteneur.addChild(chargement1);
  27. addChild(conteneur)
  28. }
  29. //ecouteur bouton2
  30. bouton2.addEventListener (MouseEvent.MOUSE_DOWN,aparaitre2);
  31. function aparaitre2 (evenement: Event): void
  32. {
  33. conteneur.addChild(chargement2);
  34. addChild(conteneur)
  35. }


 
heumm par contre je comprend pas trop l'histoire de supprimer les enfant de mon sprite , c'est a dire supprimer ces propriété ? mais si je fais ca mon image apparait n'importe où...
 
merci de ta réponse

Reply

Marsh Posté le 26-01-2010 à 22:06:36    

Tu as 3 loaders différents, ce n'est pas malin, autant en utiliser qu'un seul...
Plutot qu'avoir 3 fonctions différente pour le comportement de tes bouton, autant en avoir une seule (on determinera l'action grace à l'argument :MouseEvent)

 
Code :
  1. //Le Sprite Conteneur...
  2. var conteneur : Sprite = new Sprite();
  3. conteneur.scaleX = conteneur.scaleY = 0.7;
  4. conteneur.x = 50;
  5. conteneur.y = 40;
  6.  
  7. //Les Boutons
  8. var bonton1:Bouton1 = new Bouton1();
  9. var bouton2:Bouton2 = new Bouton2();
  10. bonton1.x = bonton1.y =150;
  11. bouton2.x = bouton2.y =150;
  12. // C'est normal qu'ils aient la même position ? Je ne pense pas, mais tu changeras !
  13. this.addChild (bonton1);
  14. this.addChild (bonton2);
  15.  
  16. //Le loader
  17. var chargement :Loader = new Loader ();
  18. conteneur.addChild(conteneur);
  19. var adresse1 :URLRequest = new URLRequest ("image/imagearsenal1.jpg" );
  20. var adresse2 :URLRequest = new URLRequest ("image/imagearsenal2.jpg" );
  21.  
  22. chargement.load(adresse1);
  23. // Je charge la 1ere image par defaut...
  24.  
  25. bouton1.addEventListener (MouseEvent.MOUSE_DOWN,aparaitre);
  26. bouton2.addEventListener (MouseEvent.MOUSE_DOWN,aparaitre);
  27.  
  28. // Puis je déclare ma fonction
  29.  
  30. function aparaitre (evenement: MouseEvent): void
  31. {
  32.     switch (evenement.target.name)
  33.     {
  34.         case "bouton1" :
  35.             chargement.load(adresse1);
  36.             break
  37.         case "bouton2" :
  38.             chargement.load(adresse2);
  39.             break
  40.     }
  41.  
  42. }
 

Ton erreur était de faire un addChild() à chaque fois que les images étaient charger, sans faire de removeChild() de ce qui étaient deja là...
Dis moi si il y a quelque chose que tu comprend pas...
Tu n'es pas obligée de reprendre le coup de la fonction unique et le switch() en fonction de l'objet qui a été cliqué...
Je trouve ça plus "propre" perso...


Message édité par abais le 26-01-2010 à 22:08:37

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Sujets relatifs:

Leave a Replay

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