probleme avec boucle for

probleme avec boucle for - Flash/ActionScript - Programmation

Marsh Posté le 08-09-2007 à 18:57:25    

bonjour à tous,
 
je galère sur une boucle for
eh oui... c'est pas croyable mais je m'en sors pas !!
j'explique : je développe un jeu de carte et je veux placer la carte que je déplace sur l'emplacement d'un de mes 4 clips cible
j'ai donc créée une petite boucle de "4 pas" qui test quelle cible se trouve sous la carte et si c'est bien une cible, déposer ma carte (stopdrag)
etlui atribuer les coordonnées de ma cible.
ça marche qu'avec la dernière cible ("zone_4" dans mon script) même si mon code dectecte bien les autres cibles !!
voilà le code situé dans chaque image du le clip carte contenant toutes les figures (1,2,3,4...):
 
stop();
this.onEnterFrame  = function() {
 if (_root.cartactive != this._name){               // detection hit (carte/zone) et incrémentation des variables situées dans image de la timeline
  cible="_root."+_root.cartactive;
  if (this.hitTest(cible)) {
   _root.zonactive=this._name;  
  }  
 }
}
this.onPress = function() {
    startDrag(this);  
    posX = this._x;                                              // coordonnées de départ de la carte
    posY = this._y;
}
this.onRelease = function() {
    stopDrag();
    for(t=1; t<5; t++){                                                    // boucle de 1 à 4 pour tester mes 4 zones cible
  if(_root.zonactive=="zone_"+t){                              // test pour connaitre la zone située sous la carte que je dépose
   zoneX=eval("_root."+_root.zonactive)._x;         // recupération coordonnées de la zone détectée
   zoneY=eval("_root."+_root.zonactive)._y;
   this._x=zoneX;                                            // placement de la carte (this) à l'emplacement de la zone détectée
   this._y=zoneY;
                 // trace (_root.zonactive);                            // trace permettant vérification
                 // trace (zoneX);trace (zoneY);
  }else{
   this._x=posX;                                              // replacement de la carte a son emplacement d'origine
   this._y=posY;
  }
    }
}
 
ce code voit chaque zone lors du release mais ne place la carte qu'avec la zone_4
Help!!!  j'y comprends plus rien, j'ai tout essayé et rien trouvé sur le net  !!!

Reply

Marsh Posté le 08-09-2007 à 18:57:25   

Reply

Marsh Posté le 12-09-2007 à 15:54:57    

hello, y'a personne que ça interpelle !! j'comprends toujours pas ce qui se passe, malgré des heures de recherche !!!

Reply

Marsh Posté le 13-09-2007 à 13:10:36    

Tu devrais mettre ton code entre balise déjà, çaserait un peu plus clair.
Sinon j'ai l'impression que ton probléme vient de la dernière partie :
   this._x=posX;
   this._y=posY;
Puisque si ta zone est zone_2 par exemple, ta boucle va continuer en 3 et 4 et ainsi replacer ta carte. (il me semble)
La solution la plus simple à mon avis serait de remplacer ton for par un while qui s'arrête ainsi dès que la condition est remplit (logique, pas besoin de continuer une fois que la carte est placé)


Message édité par Zedlefou le 13-09-2007 à 13:11:21

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 13-09-2007 à 14:22:18    

merci Zed,
pour la lisibilité du code, j'y avais bien pensé mais j'sais comment on fait !! désolé !!
après des heures de reflexion... je suis arrivé à la même conclusion, remplacer la boucle for
pour l'instant, je m'en suis sorti avec de multiples if et else if sans boucle,
c'est beaucoup de code mais ça marche !! ça va y'a que 4 zones a tester.
bon developpement à tous

Reply

Marsh Posté le 13-09-2007 à 14:34:02    

Le while est fait pour ça justement, éviter les successions de if. Regardes-y ...


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 13-09-2007 à 17:10:46    

merci beaucoup m'sieur

Reply

Marsh Posté le 13-09-2007 à 17:15:51    

Y'a aucune raison d'utiliser eval ici :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 13-09-2007 à 19:51:38    

hello Shinuza
moi aussi j'suis étonné mais si il est pas là, ma variable est égale à :
_root.monMC._x et non une valeur comme 45 ou 352 ...
merci de ton soutien

Reply

Marsh Posté le 14-09-2007 à 09:48:03    

Code :
  1. _root[_root.zonactive]


 
T'as essayé ça?


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 14-09-2007 à 10:10:35    

dans mes souvenirs oui, mais je vais ressayer !! le code sera plus propre, plus lisible. merci

Reply

Sujets relatifs:

Leave a Replay

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