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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  deux questions... chargement XML et faire apparaitre les elements

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

deux questions... chargement XML et faire apparaitre les elements

n°1267193
freed102
Arayashiki
Posté le 15-12-2005 à 13:14:36  profilanswer
 

Premiere question :  
je fais un chargement XML, j'arrive à faire afficher mes vignettes sans probleme, mais quand je clique sur une vignette c'est la derniere qui est toujours prise en compte... voici le code pour l'affichage des vignettes :
 
[en résumé]
 

Code :
  1. for(i=0;i<document.firstChild.childNodes.length;i++)
  2.  {
  3.    _root.menu_items.thumb.duplicateMovieClip("thumb_"+i,_root.menu_items.getNextHighestDepth()+1);
  4.    this_new_mc=_root.menu_items["thumb_"+i];
  5.     imageName=document.firstChild.childNodes[i].childNodes[0].lastChild.nodeValue;
  6.     chargerThumb("thumbs/"+imageName,this_new_mc); // fait apparaitre la vignette
  7.     this_new_mc.onPress=function() // là c'est là qu'on clique pour faire afficher l'image.. et c'est là que ça deconne à mon avis
  8.     {
  9.      link=document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue;
  10.      //fait afficher l'image avec l'effet de slide
  11.      SlideMenu(link,"images/"+imageName,this);
  12.     }
  13.    this_new_mc._x=new_x_pos;
  14.    this_new_mc._y=new_y_pos;
  15.   if(perline>=2)
  16.   {
  17.    perline=1;
  18.   }
  19.   if (new_x_pos<100)
  20.   {
  21.    new_x_pos+=50;
  22.   }
  23.   else if (new_x_pos>=90)
  24.   {
  25.    new_x_pos=5;
  26.    new_y_pos+=50;
  27.   }
  28.    perline++;
  29.   }
  30.  }
  31. }


 
deuxieme question :
avec cette méthode j'ai toutes mes vignettes qui apparaissent en même temps... comment faire pour qu'elles se chargent les unes apres les autres ? (un peu comme le fait simpleviewer (si vous connaissez !))
 
 
voici l'anim (completement buggée mais faut bien avancer !!!) :
 
http://www.freedfromparis.com/essais/galerie
 
voici le fichier XML :
 
http://www.freedfromparis.com/essa [...] geData.xml


Message édité par freed102 le 15-12-2005 à 13:47:38

---------------
Freed102
mood
Publicité
Posté le 15-12-2005 à 13:14:36  profilanswer
 

n°1267243
Mr Mala
Posté le 15-12-2005 à 13:45:08  profilanswer
 

Tu dois assigner une variable "link" interne à chacun de tes MCs ducpliqués
genre  

Code :
  1. _root.menu_items.thumb.duplicateMovieClip("thumb_"+i,_root.menu_items.getNextHighestDepth()+1);
  2. this_new_mc=_root.menu_items["thumb_"+i];
  3. this_new_mc.link = document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue;
  4. [...]
  5. this_new_mc.onPress=function() {
  6. SlideMenu(this.link,"images/"+imageName,this);
  7. }


 
A l'endroit où tu l'as mis ( dans le onPress ), il est "recalculé" dynamiquement quand tu cliques sur le thumbnail ... et comme tu as déjà bouclé dans tout les éléments de ton xml, i vaut fatalement toujours la valeur maxi à la sortie de la boucle ...

n°1267259
freed102
Arayashiki
Posté le 15-12-2005 à 13:51:30  profilanswer
 

Mr Mala a écrit :

Tu dois assigner une variable "link" interne à chacun de tes MCs ducpliqués
genre  

Code :
  1. _root.menu_items.thumb.duplicateMovieClip("thumb_"+i,_root.menu_items.getNextHighestDepth()+1);
  2. this_new_mc=_root.menu_items["thumb_"+i];
  3. this_new_mc.link = document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue;
  4. [...]
  5. this_new_mc.onPress=function() {
  6. SlideMenu(this.link,"images/"+imageName,this);
  7. }


 
A l'endroit où tu l'as mis ( dans le onPress ), il est "recalculé" dynamiquement quand tu cliques sur le thumbnail ... et comme tu as déjà bouclé dans tout les éléments de ton xml, i vaut fatalement toujours la valeur maxi à la sortie de la boucle ...


 
 
yesssss !!! ça marche !!!! génial !!! :) :bounce:


---------------
Freed102
n°1267267
Mr Mala
Posté le 15-12-2005 à 13:57:18  profilanswer
 

heuuuu oui d'accord mais .. tu as compris le "pq" au moins ? ;)

Message cité 1 fois
Message édité par Mr Mala le 15-12-2005 à 14:45:26
n°1267284
freed102
Arayashiki
Posté le 15-12-2005 à 14:03:58  profilanswer
 

me reste plus qu'à faire afficher les thumbs un par un (ça sert strictement à rien.. mais c plus joli ! lol !)
 
et puis à resizer mes jpg dans le movie clip pour que ça rentre dans ma scene


---------------
Freed102
n°1267288
mechkurt
Posté le 15-12-2005 à 14:04:34  profilanswer
 

encore un copieur colleur ;)
 
je me demande si c'est pas a lui que j'avais essayé d'expliquer les prototypes...


---------------
D3
n°1267290
freed102
Arayashiki
Posté le 15-12-2005 à 14:04:50  profilanswer
 

Mr Mala a écrit :

heuuuu oui d'accord mais .. tu as compris le "pq" au moins ? ;)


 
euhhh... je crois mais c vrai que c pas bien clair.. je devrais plus me pencher sur la question


---------------
Freed102
n°1267298
freed102
Arayashiki
Posté le 15-12-2005 à 14:07:34  profilanswer
 

mechkurt a écrit :

encore un copieur colleur ;)
 
je me demande si c'est pas a lui que j'avais essayé d'expliquer les prototypes...


 
copieur colleur ??? ah non !! là j'ai rien copié collé justement !!! j'ai tout ecris moi même !
mon but était d'essayer de refaire un truc qui existe deja... c un bon exercice vous ne pensez pas ? je peux vous donner le fichier source si vous voulez pour que vous voyez mon code ragoutant de débutant ! lol !
 
le voici : http://www.freedfromparis.com/essa [...] index2.fla


---------------
Freed102
n°1267306
mechkurt
Posté le 15-12-2005 à 14:09:29  profilanswer
 

je parlais de la solution que t'avais donné Mr Mala, t'énerve pas c'est pas un crime, on en voi tu sait ;)
 
si c'est pas a toi que je l'ai proposé, jette un oeil sur animal.fla:
http://mbillonlanfrey.free.fr/oldindex.html
c'est le premier truc que j'ai fait en Flash, il me semble que le code est commenté (presque trops mais c'était un tutoriaux pour mes collegues des beaux arts), je definit un prototype commun a tous mes clips, puis je les instancie en leur envoyant des parametres, cella me semble tout a fait approprié à  ta démarche de vignette.
 
soit indulgent sur l'absence totale d'optimisation, c'était juste un exercice comme ca  :hello:

Message cité 1 fois
Message édité par mechkurt le 15-12-2005 à 14:14:11

---------------
D3
n°1267312
Mr Mala
Posté le 15-12-2005 à 14:12:10  profilanswer
 

mmmmh bon:
Quand tu cliques sur la vignette, il exécute le jeu d'instruction inclu dans la fonction 'onPress' .. ok ?
Donc, il exécute l'assignation à la variable "link" avec la valeur "document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue;"
Or, à ce moment-là, i vaut combien ? ( en considérant que tu es sorti de la boucle for(i .. ) ) .. et en imaginant aussi que tu ne réaffecte pas cette variable autrepart !
 
Tu es en Flash 6, 7 ou 8 ? ...


Message édité par Mr Mala le 15-12-2005 à 14:45:08
mood
Publicité
Posté le 15-12-2005 à 14:12:10  profilanswer
 

n°1267327
freed102
Arayashiki
Posté le 15-12-2005 à 14:21:15  profilanswer
 

bah justement je pensais que l'erreur venait du [i], vu qu'il m'affichait toujours le dernier.. je supposais qu'il utilisait le dernier increment du i.. et je savais pas comment l'eviter
 
je suis en flash 8


---------------
Freed102
n°1267330
freed102
Arayashiki
Posté le 15-12-2005 à 14:22:32  profilanswer
 

mechkurt a écrit :

je parlais de la solution que t'avais donné Mr Mala, t'énerve pas c'est pas un crime, on en voi tu sait ;)
 
si c'est pas a toi que je l'ai proposé, jette un oeil sur animal.fla:
http://mbillonlanfrey.free.fr/oldindex.html
c'est le premier truc que j'ai fait en Flash, il me semble que le code est commenté (presque trops mais c'était un tutoriaux pour mes collegues des beaux arts), je definit un prototype commun a tous mes clips, puis je les instancie en leur envoyant des parametres, cella me semble tout a fait approprié à  ta démarche de vignette.
 
soit indulgent sur l'absence totale d'optimisation, c'était juste un exercice comme ca  :hello:


non je m'enervais pas t'inquiet ! ;) !  je vais tej un noeil sur ton truc  ! moi les prototypes pour l'instant je sais même pas à quoi ça sert ! lol ! ça a l'air vachement interessant en tous cas !


---------------
Freed102
n°1267353
mechkurt
Posté le 15-12-2005 à 14:32:56  profilanswer
 

ca sert que par exemple:

Code :
  1. //tu declare ton prototype:
  2. MovieClip.prototype.vignette = function(variable1, variable2, variable3) {
  3. //truc fait a l'initialisation
  4. this.variable1 = variable1;
  5. this.variable2 = variable2;
  6. this.variable3 = variable3;
  7. chargerThumb("thumbs/"+this.variable1,this_new_mc); // fait apparaitre la vignette
  8. this.onPress = function() {
  9. //faire un truc quand on clique
  10. SlideMenu(link,"images/"+this.variable2,this);
  11. }
  12. this.onEnterFrame = function() {
  13. //faire un truc toute les frames
  14. }
  15. }
  16. //et apres dans ta boucle xml tu fait:
  17. for(i=0;i<document.firstChild.childNodes.length;i++) {
  18. _root.menu_items.thumb.duplicateMovieClip("thumb_"+i,_root.menu_items.getNextHighestDepth()+1);
  19. this_new_mc=_root.menu_items["thumb_"+i];
  20. this_new_mc.vignette(document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue, document.firstChild.childNodes[i].childNodes[0].lastChild.nodeValue, unautretruc);
  21. this_new_mc._x=new_x_pos;
  22. this_new_mc._y=new_y_pos;
  23. if(perline>=2) {
  24. perline=1;
  25. }
  26. if (new_x_pos<100){
  27. new_x_pos+=50;
  28. } else if (new_x_pos>=90){
  29. new_x_pos=5;
  30. new_y_pos+=50;
  31. }
  32. perline++;
  33. }
  34. }
  35. }


---------------
D3
n°1267362
freed102
Arayashiki
Posté le 15-12-2005 à 14:36:58  profilanswer
 

par contre je comprends pas pouquoi il faut que je clique deux fois sur le bouton quand l'image n'a pas été deja chargée...


Message édité par freed102 le 15-12-2005 à 14:37:52

---------------
Freed102
n°1267370
freed102
Arayashiki
Posté le 15-12-2005 à 14:42:30  profilanswer
 

mechkurt a écrit :

ca sert que par exemple:

Code :
  1. //tu declare ton prototype:
  2. MovieClip.prototype.vignette = function(variable1, variable2, variable3) {
  3. //truc fait a l'initialisation
  4. this.variable1 = variable1;
  5. this.variable2 = variable2;
  6. this.variable3 = variable3;
  7. chargerThumb("thumbs/"+this.variable1,this_new_mc); // fait apparaitre la vignette
  8. this.onPress = function() {
  9. //faire un truc quand on clique
  10. SlideMenu(link,"images/"+this.variable2,this);
  11. }
  12. this.onEnterFrame = function() {
  13. //faire un truc toute les frames
  14. }
  15. }
  16. //et apres dans ta boucle xml tu fait:
  17. for(i=0;i<document.firstChild.childNodes.length;i++) {
  18. _root.menu_items.thumb.duplicateMovieClip("thumb_"+i,_root.menu_items.getNextHighestDepth()+1);
  19. this_new_mc=_root.menu_items["thumb_"+i];
  20. this_new_mc.vignette(document.firstChild.childNodes[i].childNodes[1].childNodes[0].nodeValue, document.firstChild.childNodes[i].childNodes[0].lastChild.nodeValue, unautretruc);
  21. this_new_mc._x=new_x_pos;
  22. this_new_mc._y=new_y_pos;
  23. if(perline>=2) {
  24. perline=1;
  25. }
  26. if (new_x_pos<100){
  27. new_x_pos+=50;
  28. } else if (new_x_pos>=90){
  29. new_x_pos=5;
  30. new_y_pos+=50;
  31. }
  32. perline++;
  33. }
  34. }
  35. }



 
ah ok.. je crois comprendre ! mais ça me fait le même effet que les classes.. je sais à quoi ça sert.. mais je sais pas quand les utiliser !


---------------
Freed102
n°1267387
mechkurt
Posté le 15-12-2005 à 14:53:36  profilanswer
 

le prototype c'est quand même moins compliqué que les classes ;)
 
le truc c'est que a chaque fois que tu as plusieurs choses qui ont le même comportement (a qq variable pres), tu peux sans doute faire un prototype...


---------------
D3
n°1267401
freed102
Arayashiki
Posté le 15-12-2005 à 14:59:14  profilanswer
 

comment je peux connaitre la taille x et y de l'image chargée dans le clip ?
 
quand je fais ça :  
 
monClip_mcl.addListener(monEcouteurDeClip);
 
monClip_mcl.loadClip(url, _root.slide.contenu.image);
trace("taille de l'image : "+monClip_mcl._x);
 
il me reponds : taille de l'image : undefined ... normal.. c'est un objet !


Message édité par freed102 le 15-12-2005 à 15:00:44

---------------
Freed102
n°1267408
freed102
Arayashiki
Posté le 15-12-2005 à 15:02:43  profilanswer
 

en plus c même pas _x !! c'est _width ! quelle quiche ! lol


---------------
Freed102
n°1267419
Mr Mala
Posté le 15-12-2005 à 15:14:13  profilanswer
 

Quand tu charges une image dynamiquement, ses propriétés _width et _height ne sont mise à jour que quand il a fini de charger... avant, elles restent lamentablement à 0 ...
De plus, c'est pas sur monClip_mcl que tu dois jouer mais sur _root.slide.contenu.image !
Là, tu es une "double quiche" :p ... MCL n'est pas un MovieClip; il n'a donc ni de _x, ni de _width ! :p
 
Et puisque tu utilises un MCL, traite l'évènement onLoadComplete ( ce que tu fais probablement .. mais vu qu'on n'a pas le contenu de monEcouteurDeClip, on peut pas savoir ... )  
.. et là, ou à partir de là, tu pourras afficher la taille de ton image chargée ...


Message édité par Mr Mala le 15-12-2005 à 15:17:14
n°1267422
freed102
Arayashiki
Posté le 15-12-2005 à 15:18:59  profilanswer
 

c ce que j'ai fait ! hihi ! sauf que je l'ai pas mis dans le onLoadComplete mais dans le onLoadInit sinon ça s'affiche po !
 
monEcouteurDeClip.onLoadInit = function(cible)
  {
 _root.slide.loader.infos.text+="Le clip est maintenant utilisable!"+"\n";
 afficheClip();
  };


---------------
Freed102
n°1267441
freed102
Arayashiki
Posté le 15-12-2005 à 15:32:34  profilanswer
 

yess ça marchouille (apparement !!!)
 
http://www.freedfromparis.com/essais/galerie/


---------------
Freed102
n°1267448
mechkurt
Posté le 15-12-2005 à 15:39:35  profilanswer
 

quand je clique sur une vignette rien ne se passe c'est normal ?


---------------
D3
n°1267452
freed102
Arayashiki
Posté le 15-12-2005 à 15:41:15  profilanswer
 

bah c le bug que je sais pas résoudre... il faut cliquer deux fois pour que l'image apparaisse quand elle n'est pas chargée !! c bizarre


---------------
Freed102
n°1267473
freed102
Arayashiki
Posté le 15-12-2005 à 15:48:01  profilanswer
 

c corrigé !!! :d:d:d j'avais mis deux fois onPress:
 
à l'appel de la fonction :
 

Code :
  1. this_new_mc.onPress=function()
  2.     {
  3.      SlideMenu(this.link,"images/"+this.imageName,this);
  4.     }


et dans la fonction :
 

Code :
  1. function SlideMenu(titre,page2load,btn){
  2. btn.onPress=function(){
  3. //blablabla
  4. }
  5. }


 
j'ai donc retiré le parametre "btn" de ma fonction qui ne sert plus à rien maintenant


Message édité par freed102 le 15-12-2005 à 15:49:11

---------------
Freed102
n°1267719
freed102
Arayashiki
Posté le 15-12-2005 à 16:57:10  profilanswer
 

par contre ya un truc chelou.. j'ai l'impression que mes images sont ecrasées parfois, voici mon code pour le resizing des images
 

Code :
  1. //dimensions de l'image d'origine
  2. oldheight=_root.slide.contenu.image._height;
  3. oldwidth=_root.slide.contenu.image._width;
  4. if(oldwidth>oldheight)
  5. {
  6. trace("formule 1 (w>h)" );
  7. // nouvelle taille (largeur) de l'image
  8. newwidth=400;
  9. _root.slide.contenu.image._width=newwidth;
  10. //calcule de la hauteur
  11. newheight=newwidth*oldheight/oldwidth;
  12. _root.slide.contenu.image._height=newheight;
  13. }
  14. else
  15. {
  16. // nouvelle taille (hauteur) de l'image
  17. newheight=350;
  18. _root.slide.contenu.image._height=newheight;
  19. //calcule de la hauteur
  20. newwidth=newheight*oldwidth/oldheight;
  21. _root.slide.contenu.image._width=newheight;
  22. }
  23. //dimensions du clip parent
  24. clipsize_x=_root.slide.contenu._width;
  25. clipsize_y=_root.slide.contenu._height;
  26. // calcule de la position horizontale
  27. new_x_pos=(clipsize_x/2)-(newwidth/2);
  28. _root.slide.contenu.image._x=new_x_pos;
  29. trace("nouvelle position horizontale : "+new_x_pos);
  30. // calcule de la position verticale
  31. new_y_pos=(clipsize_y/2)-(newheight/2);
  32. _root.slide.contenu.image._y=new_y_pos;
  33. trace("nouvelle position verticale : "+new_y_pos);
  34. trace("-------------------------------------------------------\n" );


---------------
Freed102
n°1267871
freed102
Arayashiki
Posté le 15-12-2005 à 18:33:42  profilanswer
 

j'ai trouvé mon erreur  
 
c'est  
 
newwidth=newheight*oldwidth/oldheight;
_root.slide.contenu.image._width=newwidth;
 
et pas  
 
newwidth=newheight*oldwidth/oldheight;
_root.slide.contenu.image._width=newheight;


---------------
Freed102
mood
Publicité
Posté le   profilanswer
 


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

  deux questions... chargement XML et faire apparaitre les elements

 

Sujets relatifs
Requête sur fichier XML comme BDDQuestion sur XML avec C++
Xml / ISO et python qui veut pas des caractères non ascii [Résolu][Delphi] 2005 Personal + XML
Parser un XML ?perte elements lors de INSERT INTO...
[VBS] Questions à 2 balles (0.30€) pour ultra-débutants[SQL] Questions basiques sur SQL
[Javascript] leger probleme de chargementQuestions : Classpath et Jar executable
Plus de sujets relatifs à : deux questions... chargement XML et faire apparaitre les elements


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