Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1126 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [résolu] Composant loader

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[résolu] Composant loader

n°1806106
ilundar
Posté le 29-10-2008 à 19:50:48  profilanswer
 

Bonjour,
 
je cherche à faire une galerie en flash, cependant j'ai quelques problèmes.
 
Ma galerie se compose de la sorte :  
             _ un composant loader grand, qui permet de voir l'image en grand
             _ 6 petit composants loader qui permettent d'afficher les images en petit
 
J'ai cependant plus que 6 images. J'ai donc créé un tableau contenant le lien vers chaque image, un bouton permet ensuite de changer les images  à afficher, c'est là où ça foire.
 
Voilà le code :  

Code :
  1. var tabgal:Array = new Array();
  2. tabgal[1] = "galerie/1.jpg";
  3. tabgal[2] = "galerie/2.jpg";
  4. tabgal[3] = "galerie/3.jpg";
  5. tabgal[4] = "galerie/4.jpg";
  6. tabgal[5] = "galerie/5.jpg";
  7. tabgal[6] = "galerie/6.jpg";
  8. tabgal[7] = "galerie/7.jpg";
  9. tabgal[8] = "galerie/8.jpg";
  10. tabgal[9] = "galerie/9.jpg";
  11. tabgal[10] = "galerie/10.jpg";
  12. tabgal[11] = "galerie/11.jpg";
  13. tabgal[12] = "galerie/12.jpg";
  14. tabgal[13] = "galerie/13.jpg";
  15. tabgal[14] = "galerie/14.jpg";
  16. tabgal[15] = "galerie/15.jpg";
  17. tabgal[16] = "galerie/16.jpg";
  18. tabgal[17] = "galerie/17.jpg";
  19. tabgal[18] = "galerie/18.jpg";
  20. tabval_1 = 1;
  21. tabval_2 = 2;
  22. tabval_3 = 3;
  23. tabval_4 = 4;
  24. tabval_5 = 5;
  25. tabval_6 = 6;
  26. gal1.contentPath = tabgal[tabval_1];
  27. gal2.contentPath = tabgal[tabval_2];
  28. gal3.contentPath = tabgal[tabval_3];
  29. gal4.contentPath = tabgal[tabval_4];
  30. gal5.contentPath = tabgal[tabval_5];
  31. gal6.contentPath = tabgal[tabval_6];
  32. auex.onPress = function() {
  33. if (tabval_6+6<19) {
  34.  tabval_1 = tabval_1+6;
  35.  tabval_2 = tabval_2+6;
  36.  tabval_3 = tabval_3+6;
  37.  tabval_4 = tabval_4+6;
  38.  tabval_5 = tabval_5+6;
  39.  tabval_6 = tabval_6+6;
  40. } else {
  41.  tabval_1 = 1;
  42.  tabval_2 = 2;
  43.  tabval_3 = 3;
  44.  tabval_4 = 4;
  45.  tabval_5 = 5;
  46.  tabval_6 = 6;
  47. }
  48. };


 
sachant que auex est mon bouton et que gal1 à gal6 sont les loader petit.
 
Sur chaque loader est ensuite défini la fonction permettant d'afficher l'image petite en image grande.
 
En fait les images de départ s'affichent et je peux les afficher en grand mais je ne peux pas changer la série de départ ( images 1 à 6).
 
Pourtant en mettant une fonction trace je m'aperçoit que les variables sont bien modifiées.


Message édité par ilundar le 01-11-2008 à 10:42:57
mood
Publicité
Posté le 29-10-2008 à 19:50:48  profilanswer
 

n°1806198
Zedlefou
In cabbage we trust !
Posté le 30-10-2008 à 04:08:59  profilanswer
 

Faudrait que tu apprennes a utiliser les boucles quand meme :/
 

Code :
  1. var tabgal:Array = new Array();
  2. for(var i=1 ; i <=18 ; i++){
  3.    tabgal[i] = "galerie/"+i+".jpg";
  4. }


 
Ou dans le cas d'un tableau, encore mieux

Code :
  1. var tabgal:Array = new Array("0" );
  2. for(var i=1 ; i <=18 ; i++){
  3.    tabgal.push("galerie/"+i+".jpg" );
  4. }


 
Peut etre qu'en simplifiant ton code, on pourra comprendre ton probleme ;)


Message édité par Zedlefou le 30-10-2008 à 04:09:18

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1806224
ilundar
Posté le 30-10-2008 à 10:21:13  profilanswer
 

Oui, c'est vrai. je ne connais les boucles mais il est vrai que ne maniant pas le l'action script depuis longtemps j'ai préféré écrire le tout sous forme détaillé.
Je remanie le tout et je poste le code ensuite.

n°1806329
ilundar
Posté le 30-10-2008 à 13:25:29  profilanswer
 

je n'arrive pas à synthétiser la partie définissant contentPath pour chaque loader.
Voilà ce que j'ai essayé de faire et qui ne marche pas :

Code :
  1. for (var i = 1; i<=6; i++) {
  2. myloader="gal"+i;
  3. myloader.contentPath=tabgal[i];


Message édité par ilundar le 30-10-2008 à 13:30:44
n°1806358
Zedlefou
In cabbage we trust !
Posté le 30-10-2008 à 14:21:44  profilanswer
 

Non, la tu definis la meme variable 6 fois.
A la place de ligne 2 et 3 tu mets
 
this["gal"+1].contentPath = tabgal[i];


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1806367
ilundar
Posté le 30-10-2008 à 14:36:40  profilanswer
 

ok merci beaucoup mais maintenant je retombe sur le problème du départ, rien ne se passe quand je clic sur le bouton.
Pourtant j'ai appliqué la même technique :

Code :
  1. mybutton.onPress = function() {
  2.  this["gal"+i].contentPath = tabgal[i+6];
  3. };


Message édité par ilundar le 30-10-2008 à 15:17:31
n°1806443
ilundar
Posté le 30-10-2008 à 16:23:16  profilanswer
 

Finalement ça marche si je met l'action directement sur le bouton. Mais le problème c'est que le bouton ne marche qu'une fois
 
Voilà ce que j'ai tappé dans le bouton  

Code :
  1. on (press) {
  2. for (var n = 1; n<3; n++) {
  3.  for (var i = 1; i<=6; i++) {
  4.   this["gal"+i].contentPath = tabgal[i+n*6];
  5.   break;
  6.  }
  7.  if (n>2) {
  8.   this["gal"+i].contentPath = tabgal[i];
  9.   break;
  10.  }
  11. }
  12. }


 


Message édité par ilundar le 30-10-2008 à 17:08:30
n°1806715
Zedlefou
In cabbage we trust !
Posté le 31-10-2008 à 03:15:46  profilanswer
 

Je vois a peu pres, mais ce que je ne comprend pas, c'est l'action du bouton. Il est censé faire quoi ?


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1806784
ilundar
Posté le 31-10-2008 à 10:52:45  profilanswer
 

Je me suis surement un peu embrouillé, je vais donc ré expliquer le fonctionnement général de la galerie.
 
Un tableau contient toutes les images.
6 composants loader affichent les images qu'ils ont puisé dans le tableau.
 
Or le tableau contient plus de 6 images, elles ne peuvent donc pas être toutes affichées en même temps.
Un bouton permet alors d'afficher 6 autres images.
 
Donc sur 12 images par exemples on a :
loader 1 ->image 1                                                           loader 1 ->image 7                                                  loader 1 ->image 1
loader 2 ->image 2            on appuie sur le bouton                loader 2 ->image 8       on appuie sur le bouton            loader 2 ->image 2
loader 3 ->image 3           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦\        loader 3 ->image 9    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦\     loader 3->image 3
loader 4 ->image 4           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦ >      loader 4 ->image 10   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦ >   loader 4 ->image 4
loader 5 ->image 5           _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦/       loader 5 ->image 11    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _¦/    loader 5 ->image 5
loader 6 ->image 6                                                           loader 6 ->image 12                                                loader 6 ->image 6
 
 
 
Je pense ne pas pouvoir faire plus clair  :)

n°1806824
Zedlefou
In cabbage we trust !
Posté le 31-10-2008 à 11:40:44  profilanswer
 

Ok, je vois.
Moi ce que je ferais:

Code :
  1. mon_btn.gal_step = 0
  2. mon_btn.onRelease = function(){
  3.   for (var i = 1; i<=6; i++) {
  4.     this["gal"+i].contentPath = tabgal[i + this.gal_step * 6];
  5.   }
  6.    if(this.gal_step == 0){
  7.      this.gal_step = 1;
  8.   }else if(this.gal_step == 1){
  9.      this.gal_step = 0;
  10.   }
  11. }


Ce genre d'astuce est tres utile pour controler le statut de ton anim. Tu ajoutes une propriété a ton bouton qui démarre a 0. Une fois cliqué ca passe a 1 (si tu avais 18 ou 24 images, ca passerait a 2 puis 3) et ca repasse a 0 un fois que tu atteins le max (ici, le max c'est 1).

 

En une ligne ce code

Code :
  1. if(this.gal_step == 0){
  2.      this.gal_step = 1;
  3.   }else if(this.gal_step == 1){
  4.      this.gal_step = 0;
  5.   }


... donnerait ceci

Code :
  1. this.gal_step = (this.gal_step == 0) ? 1 : 0;


Si ta proprieté = 0, tu lui ajoutes 1. Sinon, tu la remets a 0.


Message édité par Zedlefou le 31-10-2008 à 11:41:13

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
mood
Publicité
Posté le 31-10-2008 à 11:40:44  profilanswer
 

n°1806838
ilundar
Posté le 31-10-2008 à 11:49:44  profilanswer
 

merci beaucoup, je ne connaissais pas du tout ce genre de propriété. Effectivement, je pense que ça me servira souvent.

n°1806846
Zedlefou
In cabbage we trust !
Posté le 31-10-2008 à 11:58:07  profilanswer
 

Ce sont les prémices de la programmation objet.  
Tu as ton objet bouton, tu peux lui attribuer autant de propriété que tu veux (faut pas s'emmêler les pinceaux avec celles qui existent déjà: _alpha, _x etc ...)
C'est tres utile aussi pour générer des boutons a la volé.
Tu as 6 boutons par exemple. Tu veux leur donner des actions differentes. Tu les nommes btn1 a btn6 et ensuite

Code :
  1. for (var i = 1; i<=6; i++) {
  2.    this["btn"+i].id = i ;
  3.    this["btn"+i].onRelease = function(){
  4.       showId(this.id);
  5.   }
  6. }
  7. function showId(Pid){
  8. if(Pid == 1){
  9.   trace("Vous avez cliqué sur le premier bouton" );
  10. }else{
  11.   trace("Vous avez cliqué sur les autres boutons" );
  12. }
  13. }


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1806881
ilundar
Posté le 31-10-2008 à 12:46:23  profilanswer
 

En fait j'ai essayé d'appliquer le code  

Code :
  1. 1. mon_btn.gal_step = 0
  2.    2. mon_btn.onRelease = function(){
  3.    3.   for (var i = 1; i<=6; i++) {
  4.    4.     this["gal"+i].contentPath = tabgal[i + this.gal_step * 6];
  5.    5.   }
  6.    6.    if(this.gal_step == 0){
  7.    7.      this.gal_step = 1;
  8.    8.   }else if(this.gal_step == 1){
  9.    9.      this.gal_step = 0;
  10.   10.   }
  11.   11. }


mais malheuresement il ne marche pas, j'ai bien essayé de modifier un certain nombre de chose mais rien n'y fait.  
Voilà le code en entier :

Code :
  1. var tabgal:Array = new Array("0" );
  2. for (var i = 1; i<=18; i++) {
  3. tabgal.push("galerie/"+i+".jpg" );
  4. }
  5. mon_btn.gal_step = 0;
  6. for (var i = 1; i<=6; i++) {
  7. this["gal"+i].contentPath = tabgal[i+mon_btn.gal_step*6];
  8. }
  9. mon_btn.onRelease = function() {
  10. for (var i = 1; i<=6; i++) {
  11.  this["gal"+i].contentPath = tabgal[i+this.gal_step*6];
  12. }
  13. if (this.gal_step == 0) {
  14.  this.gal_step = 1;
  15. } else if (this.gal_step == 1) {
  16.  this.gal_step = 0;
  17. }
  18. trace (mon_btn.gal_step);
  19. };


la fonction trace, m'affiche bien la variation de gal_step si elle est placé à cet endroit. Mais si je la place tout à la fin, elle ne m'indique de que gal_step=0. Je pense donc qu'il faut définir gal_step en tant que varaible publique, non ?

n°1806927
Zedlefou
In cabbage we trust !
Posté le 31-10-2008 à 13:42:45  profilanswer
 

Ah non, au temps pour moi. C'est un probleme de scope avec tes loaders.

 

Ce code devrait marcher:

Code :
  1. var tabgal : Array = new Array ("0" );
  2. for (var i = 1; i <= 18; i ++){
  3. tabgal.push ("galerie/" + i + ".jpg" );
  4. }
  5. mon_btn.gal_step = 0;
  6. for (var i = 1; i <= 6; i ++){
  7. this ["gal" + i].contentPath = tabgal [i + mon_btn.gal_step * 6];
  8. }
  9. mon_btn.onRelease = function ()
  10. {
  11. switchGal (this.gal_step);
  12. };
  13. function switchGal (step){
  14. trace (step);
  15. for (var i = 1; i <= 6; i ++){
  16.  this ["gal" + i].contentPath = tabgal [i + step * 6];
  17. }
  18. if (step == 0){
  19.  mon_btn.step = 1;
  20. } else if (step == 1){
  21.  mon_btn.step = 0;
  22. }
  23. }
 

Dans mon_btn.onRelease si tu fais trace(this) tu vas etre dans le bouton. Alors que si tu fais un trace(this) dans ta fonction switchGal tu vas voir que tu es sur la racine du fichier (_level0)


Message édité par Zedlefou le 31-10-2008 à 13:44:04

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1806929
ilundar
Posté le 31-10-2008 à 13:52:12  profilanswer
 

Dsl mai ça ne change rien !

n°1806963
Zedlefou
In cabbage we trust !
Posté le 31-10-2008 à 15:18:45  profilanswer
 

Post le .fla pour voir


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1807051
ilundar
Posté le 31-10-2008 à 18:42:41  profilanswer
 

Je n'ai pas posté le fichier sur lequel je travail mais une copie plus légère, sans éléments graphiques.
http://dl.free.fr/qXsJo9VZG

n°1807175
Zedlefou
In cabbage we trust !
Posté le 01-11-2008 à 03:36:48  profilanswer
 

Hum, hum. Ok, je me suis un peu gourré.
Faut remplacer ca
 if (step == 0){
 mon_btn.step = 1;
} else if (step == 1){
 mon_btn.step = 0;
}
 
par ca
 if (step == 0) {
  mon_btn.gal_step = 1;
 } else if (step == 1) {
  mon_btn.gal_step = 0;
 }


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1807185
ilundar
Posté le 01-11-2008 à 10:40:50  profilanswer
 

Ok j'essaie ça tout de suite, en tout cas merci de l'attention que tu me porte !


Message édité par ilundar le 01-11-2008 à 10:41:05
n°1807186
ilundar
Posté le 01-11-2008 à 10:42:35  profilanswer
 

ça marche suepr bien ! Merci pour tout.

n°1807188
Zedlefou
In cabbage we trust !
Posté le 01-11-2008 à 10:45:10  profilanswer
 

De rien :jap:
J'espere que tu seras l'adapter pour que ca marche avec 18 images. ;)


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1807227
ilundar
Posté le 01-11-2008 à 13:38:46  profilanswer
 

PAs de soucis, c'est déjà fait, j'ai compris le principe

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [résolu] Composant loader

 

Sujets relatifs
[resolu]Verification 'variable || contenu champ table mysql'[Résolu]Débordement d'image dans pdf générer par FOP
[résolu] Problème d'accent avec FOP[Resolu] Pbm de "récupération de paramètres" avec Ajax.Request
[résolu] petit script en python[Résolu] - [Batch Dos] Probleme carateres dans resultat txt
Afficher le résultat d'un formulaire dans une iframe [résolu 2FOIS][C#] simuler un click souris [résolu]
[Résolu]Faire évoluer une requête SQL 
Plus de sujets relatifs à : [résolu] Composant loader


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR