MovieClipLoader et setInterval

MovieClipLoader et setInterval - Flash/ActionScript - Programmation

Marsh Posté le 03-04-2006 à 22:08:49    

:) Salut
 
Voici une  base de code pour une galerie "thumbnail" via un fichier XML.
Ce que je cherche a faire c’est de charger mes images une par une.  
 
J’ai vu que je pouvais utiliser un "setInterval"  
Mais apparemment on me dit qu’avec un "MovieClipLoader" c’est plus simple ?
Si c’est vrai !! comment procède t’on ?
 

Code :
  1. function loadXML(loaded) {
  2. if (loaded) {
  3.  xmlNode = this.firstChild;
  4.  description = [];
  5.  thumbnails = [];
  6.  total = xmlNode.childNodes.length;
  7.  for (j=0; j<total; j++) {
  8.   description[j] = xmlNode.childNodes[j].childNodes[0].firstChild.nodeValue;
  9.   thumbnails[j] = xmlNode.childNodes[j].childNodes[1].firstChild.nodeValue;
  10.   thumbnails_fn(j);
  11.  }
  12.  firstImage();
  13. } else {
  14.  content = "fichier non chargé!";
  15. }
  16. }
  17. xmlData = new XML();
  18. xmlData.ignoreWhite = true;
  19. xmlData.onLoad = loadXML;
  20. xmlData.load("images_V2.xml" );
  21. //*****************************************************************
  22. function firstImage() {
  23.  cntner_img.loadMovie(thumbnails[0], 1);
  24.  desc_txt.text = description[0];
  25. }
  26. //*****************************************************************  
  27. _root.createEmptyMovieClip("cntner_img", 1);
  28.  cntner_img._y = 30;
  29.  cntner_img._x = 30;
  30. //*****************************************************************  
  31. _root.createEmptyMovieClip("thumbs_all", 2);
  32.  thumbs_all._y = 30;
  33.  thumbs_all._x = 400;  
  34. function thumbnails_fn(i) {  
  35. trace("makeButtons  : i = "+i);  
  36.  Mc_clip = thumbs_all.attachMovie("thumb_bout", "thumb_bout"+i, 100+i);
  37.  Mc_clip._x = i%3*120;
  38.  Mc_clip._y = Math.floor(i/3)*120;  
  39.  McLoader = Mc_clip.createEmptyMovieClip("loader_Bar", 1000+i);  
  40.  
  41.  my_listener = new Object();
  42.  
  43. my_listener.onLoadProgress = function(mc:MovieClip, loadedBytes:Number, totalBytes:Number) {
  44.  pourcent_txt.text = Math.round((loadedBytes/totalBytes) * 100)+ "%";  
  45. };
  46. my_listener.onLoadInit = function(target_mc) {    
  47. target_mc.onRelease = function() {
  48.  cntner_img.loadMovie(thumbnails[i], 1);
  49.  desc_txt.text = description[i];
  50. };
  51. };
  52. //*****************************************************************  
  53. my_McLoader = new MovieClipLoader();
  54. my_McLoader.addListener(my_listener);
  55. my_McLoader.loadClip(thumbnails[i], McLoader);  
  56. }


 :) Merci


Message édité par olimann le 03-04-2006 à 22:10:57
Reply

Marsh Posté le 03-04-2006 à 22:08:49   

Reply

Marsh Posté le 04-04-2006 à 09:41:33    

setInterval = moyen d'executer une action (n'importe laquelle) toutes les x millisecondes
 
Moviecliploader = moyen de charger une image ou un swf (ne se trouvant pas dans la bibliotheque) dans un clip conteneur sur la scene
 
dans l'absolue y a de grande chance que tu est besoin des deux (bien que tu puisse remplacer le setInterval par un onEnterFrame un peu moins compliqué a utiliser), vas voir la doc pour bien comprendre l'utilisation de ces 2 classes....


---------------
D3
Reply

Marsh Posté le 04-04-2006 à 12:26:13    

Bah on t as dis d utiliser un moviecliploader car il a des methodes qui permettent de gerer la progression du loading donc une fois que ton image est fini de charger tu passes a l autre...

Reply

Marsh Posté le 05-04-2006 à 01:06:36    

:) Merci pour votre intérêt !!
 
J’ai commencé une refonte du code mais ce n’est pas très probant.
Le chargement se fait progressivement mais la trace sort un certain nombre de "i = 0" avant de trouver la première image.  :??: Apparemment ma fonction "makeButtons" ne fonctionne pas correctement.
 

Code :
  1. function loadXML(loaded) {
  2. if (loaded) {
  3.  xmlNode = this.firstChild;
  4.  description = [];
  5.  thumbnails = [];
  6.  total = xmlNode.childNodes.length;
  7.  for (j=0; j<total; j++) {
  8.   description[j] = xmlNode.childNodes[j].childNodes[0].firstChild.nodeValue;
  9.   thumbnails[j] = xmlNode.childNodes[j].childNodes[1].firstChild.nodeValue;
  10.   makeButtons();
  11.  }
  12. } else {
  13.  content = "fichier non chargé!";
  14. }
  15. }
  16. xmlData = new XML();
  17. xmlData.ignoreWhite = true;
  18. xmlData.onLoad = loadXML;
  19. xmlData.load("images_V2.xml" );
  20. //*****************************************************************  
  21. _root.createEmptyMovieClip("cntner_img", 1);
  22. cntner_img._y = 30;
  23. cntner_img._x = 30;
  24. //
  25. _root.createEmptyMovieClip("thumbs_all", 2);
  26. thumbs_all._y = 30;
  27. thumbs_all._x = 400;
  28. //*****************************************************************  
  29. var i= 0;
  30. var imgLoader = new MovieClipLoader();
  31.  
  32. imgLoader.onLoadProgress = function (targetMC, loadedBytes, totalBytes){
  33. Mc_clip.pourcent_txt.text = Math.round((loadedBytes/totalBytes) * 100)+ "%";
  34. }
  35. imgLoader.onLoadInit  = function (targetMC){
  36. Container_Img.onRelease = function() {
  37. cntner_img.loadMovie(thumbnails[i], 1);
  38. };  
  39.  i++;
  40.  makeButtons();
  41. };  
  42. function makeButtons() {  
  43. trace("makeButtons  : i = "+i);  
  44. if(i <= total){
  45.  Mc_clip = thumbs_all.attachMovie("thumb_bout", "thumb_bout"+i, 100+i);
  46.  Mc_clip._x = i%3*120;
  47.  Mc_clip._y = Math.floor(i/3)*120;
  48.  Container_Img = Mc_clip.createEmptyMovieClip("loader_Bar", 1000+i);
  49.  imgLoader.loadClip(thumbnails[i], Container_Img);
  50. }  
  51. }

:) Merci


Message édité par olimann le 05-04-2006 à 01:11:24
Reply

Sujets relatifs:

Leave a Replay

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