attachMovie : poses sur une grille

attachMovie : poses sur une grille - Flash/ActionScript - Programmation

Marsh Posté le 29-11-2006 à 11:29:23    

Bonjour,  
une petite question d'algorithmie...
 
voila, j'extrais des données XML, et je fais des attachMovies pour poser mes icones dans mon clip...
 
j'aimerai que mes icones se posent sur "grille"...
 
j'arrive à les positionner tous les x pixels en largeur... jusque là pas de problème... ça donne :
 
j=130*n+25;
k=227;
clip=liste
icone=clip.attachMovie("icone_clip","icone"+n,liste.getNextHighestDepth(),{_x:j,_y:k});
 
 
mais j'arrive aps à leur dire que au bout de 5.. tu passes à la ligne du dessus et tu recommences à zero (c'est tout bete je pense !)
 
voici mon code :
 

Code :
  1. import mx.transitions.Tween;
  2. import mx.transitions.easing.*;
  3. stop();
  4. /*if(!_root.rubrique)
  5. {
  6. _root.rubrique="espace";
  7. _root.langue="fr";
  8. }*/
  9. if(!_root.itemid)
  10. {
  11. _root.itemid="";
  12. }
  13. baseurl="";
  14. //trace(_root.rubrique);
  15. _root.currentView=1;
  16. function newBookXML(fichier)
  17. {
  18. bookXML = new XML();
  19. bookXML.ignoreWhite=true;
  20. bookXML.onLoad=extractData2;
  21. bookXML.load(fichier);
  22. trace(fichier);
  23. reponse.text+=fichier+"\n";
  24. }
  25. function extractData2(success){
  26. //trace("data ok " );
  27. //trace(bookXML.firstChild.childNodes.length);
  28. xml=bookXML.firstChild.childNodes;
  29. var objets:Object=new Object();
  30. reponse.text+="xml :"+this
  31. //parse XML
  32. _root.row_tab=1;
  33.  thisChild=xml;
  34.  k=0;
  35.  j=0;
  36.  for(n=0;n<thisChild.length;n++)
  37.  {
  38. //trace(thisChild[n].childNodes[2].lastChild)
  39.  objets[_root.row_tab]=new Object();
  40.  objets[_root.row_tab]._icone=baseurl+thisChild[n].firstChild.childNodes[0].lastChild;
  41.  objets[_root.row_tab]._projet=thisChild[n].firstChild.childNodes[1].lastChild;
  42.  objets[_root.row_tab]._description=thisChild[n].firstChild.childNodes[2].lastChild;
  43.  objets[_root.row_tab]._legende=thisChild[n].firstChild.childNodes[3].lastChild;
  44.  objets[_root.row_tab]._photo=baseurl+thisChild[n].firstChild.childNodes[4].lastChild;
  45.  objets[_root.row_tab]._id=thisChild[n].firstChild.childNodes[5].lastChild;
  46.   j=130*n+25;
  47.   k=227;
  48.  clip=liste
  49.  trace("icone "+n+ " : "+_root.baseurl+thisChild[n].firstChild.childNodes[0].lastChild)
  50.  icone=clip.attachMovie("icone_clip","icone"+n,liste.getNextHighestDepth(),{_x:j,_y:k});
  51.  trace(icone)
  52.  //trace ("j : "+ j + " k : "+k+ " depth :"+liste.getNextHighestDepth())
  53.  icone.scene.loadMovie(_root.baseurl+thisChild[n].firstChild.childNodes[0].lastChild);
  54.  icone._id=thisChild[n].firstChild.childNodes[4].lastChild;
  55.  //trace("item : "+thisChild[n].firstChild.childNodes[4].lastChild);
  56.  icone.onPress=function()
  57.  {
  58.   trace(this._id);
  59.   _root.itemid=this._id;
  60.   _root.currentRub="__3ter";
  61.   _root.loadScene();
  62.  }
  63.  _root.row_tab++;
  64.  //trace(_root.row_tab);
  65.  }
  66. }
  67. newBookXML(_root.baseurl+"presseiconesxml.php?id="+_root.itemid+"&langue="+_root.langue)

Reply

Marsh Posté le 29-11-2006 à 11:29:23   

Reply

Marsh Posté le 29-11-2006 à 11:47:56    

Si j'ai bien compris ton probléme, voici un bout de code qui pourra t'aider :

 
Code :
  1. //endehors de ta boucle
  2. var m = 0;
  3. // dans la boucle
  4. j=130*n+25;
  5. k=227+m*60; // par exemple
  6. if (n>5) {
  7.   m++
  8. }


Message édité par Zedlefou le 29-11-2006 à 11:48:32
Reply

Marsh Posté le 29-11-2006 à 13:51:35    

ça se fait avec l'opérateur modulo %, qui donne le reste d'une division.
 
SI n % nbParLigne = 0
ALORS nbDeLigne ++;
_y = offsetY * nbDeLigne;
 
yeah, rock'n'roll le modulo, à maitriser : si le reste de la division = 0, c'est que n est multiple de nbParLigne, et donc logiquement on peut passer à la ligne suivante. Attention : avec n = 0 , n % m est toujours égal à zéro.

Message cité 2 fois
Message édité par craps_youpla le 29-11-2006 à 13:56:50
Reply

Marsh Posté le 29-11-2006 à 13:56:37    

craps_youpla a écrit :

yeah, rock'n'roll le modulo, à maitriser.


Ouh yeah, c'est fondamental !

Reply

Marsh Posté le 29-11-2006 à 14:05:12    

craps_youpla a écrit :

ça se fait avec l'opérateur modulo %, qui donne le reste d'une division.
 
SI n % nbParLigne = 0
ALORS nbDeLigne ++;
_y = offsetY * nbDeLigne;
 
yeah, rock'n'roll le modulo, à maitriser : si le reste de la division = 0, c'est que n est multiple de nbParLigne, et donc logiquement on peut passer à la ligne suivante. Attention : avec n = 0 , n % m est toujours égal à zéro.


 
 
ah oui j'avais deja vu un truc comme ça il ya longtemps en PHP pour savoir si une ligne etait paire ou impaire pour changer la couleur !!!  
 
ça donnait un truc du genre :
 
if($ligne%2=0)
{
echo "ligne paire";
}
else
{
echo "ligne impaire";
}
 
(j'en suis plus tres sur mais ça ressemblait à ça !)
merchi bcp !! je vais me pencher sur l'histoire du modulo qui a l'air tres tres bienx !!!
 
Merchi !!!
:jap:


Message édité par freed102 le 29-11-2006 à 14:06:35
Reply

Sujets relatifs:

Leave a Replay

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