AS3 = probleme indicateur chargement d'images multiple

AS3 = probleme indicateur chargement d'images multiple - Flash/ActionScript - Programmation

Marsh Posté le 05-09-2010 à 18:59:34    


Bonjour a tous,
 
Voici mon probleme...
 
j'ai un prechargement du "conteneurImage_perso" qui s'execute normalement avec la simulation de debit de flash CS4.
Hors, lorsque je le met sur serveur, j'ai un probleme sur ce loader. Les informations passent peut etre mal car sa clignote ou sa bug.
Je comprend vraiment pas dou sa peu venir....HELP!!
je charche trouver la solution ou un moyen pus propre en programation pour que le programme s'execute normalement...
 
Merci d'avance  
 
A plus
 
 

Code :
  1. import flash.utils.Timer;
  2. import flash.display.MovieClip;
  3. import flash.display.Loader;
  4. //Déclaration de toutes les variables
  5. var image_mod:URLRequest;
  6. var img_nom_mod:String;
  7. var img_url_mod:String;
  8. var u:int;
  9. var position_img_mod:Number = - 567
  10. var charge_mod_perso:MovieClip = new load_MC()
  11. var k:int
  12. var conteneurImage_perso:Loader = new Loader();
  13. var pct_img_load:Number
  14. var module_app:Timer = new Timer(600,1)
  15. //initialisation des elements de la bibliotheques importé
  16. charge_mod_perso.x = 673;
  17. charge_mod_perso.y = 270;
  18. addChild(charge_mod_perso);
  19. charge_mod_perso.visible = false;
  20. //initialisation des elements de la scene
  21. MC_ecran.MC_mod.MOD_objet.loader_image_module.barre.scaleX = 0
  22. MC_ecran.MC_mod.MOD_objet.loader_image_module.img_charg.image.text =  "0"+ " / 100"
  23. MC_ecran.MC_mod.MOD_objet.contenu_img.mask = MC_ecran.MC_mod.MOD_objet.mask_module_obj;
  24. function clic_lien (evt:MouseEvent):void
  25. {
  26. //clic sur les boutons
  27. TweenMax.to(MC_ecran.MC_mod.MOD_objet.contenu_img, 0.2, {alpha: 0});
  28. num_clic_liens = evt.target.parent.name;
  29. init_mod_obj ();
  30. module_app.addEventListener(TimerEvent.TIMER, module_obj)
  31. module_app.start ();
  32. }
  33. function init_mod_obj ():void
  34. {
  35. //initialisation des information du contenu de l'XML
  36. img_nom_mod = XmlListliens.(@id== num_clic_liens - 1).fichier;
  37. img_url_mod = XmlListliens.(@id== num_clic_liens - 1).dossier;
  38. }
  39. function module_obj (Tevt:TimerEvent):void
  40. {
  41. dechargement_images ();
  42. // recupération des fichier a charger avec leur nom respectifs
  43. for ( k = 0 ; k <= 100 ; k++ )
  44. {
  45.  if (k < 10)
  46.  {
  47.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "000" + k + ".jpg" );
  48.   position_images();
  49.  }
  50.  if (  k >9 && k < 100)
  51.  {
  52.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "00" + k + ".jpg" );
  53.   position_images();
  54.  }
  55.  if (  k > 99)
  56.  {
  57.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "0" + k + ".jpg" );
  58.   position_images();
  59.  }
  60. }
  61. // ecouteurs d'evenement du chargement de la globalité de tous les 100 loader (conteneurImage_perso)
  62. // impossible de les positionner ailleurs
  63. conteneurImage_perso.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, charge_img_obj);
  64. conteneurImage_perso.contentLoaderInfo.addEventListener(Event.COMPLETE, complet_img_obj);
  65. module_app.removeEventListener(TimerEvent.TIMER, module_obj)
  66. }
  67. function position_images ():void
  68. {
  69. // place les images les une apres les autres dans le clip contenu_img(position_img_mod * k)
  70. // voir la boucle ci dessus
  71. conteneurImage_perso = new Loader();
  72. conteneurImage_perso.x = position_img_mod * k + 3.5;
  73. conteneurImage_perso.load (image_mod);
  74. MC_ecran.MC_mod.MOD_objet.contenu_img.addChild(conteneurImage_perso);
  75. }
  76. function dechargement_images ():void
  77. {
  78. //decharge les images une par une
  79. for ( var l:int = k ; l > 0 ; l-- )
  80. {
  81.  MC_ecran.MC_mod.MOD_objet.contenu_img.removeChildAt(conteneurImage_perso);
  82. }
  83. }
  84. function charge_img_obj (pEvt:ProgressEvent):void
  85. {
  86. //charge le contenu
  87. pct_img_load = pEvt.bytesLoaded / pEvt.bytesTotal
  88. MC_ecran.MC_mod.MOD_objet.loader_image_module.barre.scaleX = pct_img_load
  89. MC_ecran.MC_mod.MOD_objet.loader_image_module.img_charg.image.text =  int(pct_img_load * 100) + " / 100"
  90. charge_mod_perso.visible = true;
  91. }
  92. function complet_img_obj (Evt:Event):void
  93. {
  94. // animation pour l'affichage
  95. charge_mod_perso.visible = false;
  96. TweenMax.to(MC_ecran.MC_mod.MOD_objet.contenu_img, 1, {alpha: 1});
  97. MC_ecran.MC_mod.MOD_objet.mask_module_obj.gotoAndPlay(1);
  98. conteneurImage_perso.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, charge_img_obj);
  99. conteneurImage_perso.contentLoaderInfo.removeEventListener(Event.COMPLETE, complet_img_obj);
  100. }

Reply

Marsh Posté le 05-09-2010 à 18:59:34   

Reply

Marsh Posté le 06-09-2010 à 11:51:44    

personne peut me repondre?

Reply

Marsh Posté le 06-09-2010 à 23:37:26    

salut,
 
Je sais pas trop  :??:  :
Y a pas une propriété dans le loader pour dire que c'est fini ( event ou autre) ?


Message édité par lefermier le 06-09-2010 à 23:37:48
Reply

Marsh Posté le 07-09-2010 à 06:48:22    

J'ai trouver la solution:
les navigateur internet ne chargent pas les images de la meme maniere que le simulateur de bande passante de flash. le simulateur place les 100 loaders de la boucle puis charge 100 images simultanément.Le navigateur place les 100 loaders et les charges les uns apres les autres.
En gros j'ai utilisé un ecouteur d'evenement à chaque boucle sur ce loader avec la fonction COMPLETE et j'ai incrémenté une valeur v++ une fois le loader chargé.Une fois a 100 le compteur va a 0.
Ca fonctionne tres bien sur le navigateur.
 

Code :
  1. import flash.utils.Timer;
  2. import flash.display.MovieClip;
  3. import flash.display.Loader;
  4. var charge_mod_perso:MovieClip = new load_MC();
  5. var conteneurImage_perso:Loader
  6. var image_mod:URLRequest;
  7. var img_nom_mod:String;
  8. var img_url_mod:String;
  9. var position_img_mod:Number = - 567;
  10. var pct_img_load:Number
  11. var k:int
  12. var v:int = 0
  13. var module_app:Timer = new Timer(600,1)
  14. charge_mod_perso.x = 673;
  15. charge_mod_perso.y = 220;
  16. addChild(charge_mod_perso);
  17. charge_mod_perso.visible = false;
  18. charge_mod_perso.alpha = 0;
  19. MC_ecran.MC_mod.MOD_objet.loader_image_module.barre.scaleX = 0
  20. MC_ecran.MC_mod.MOD_objet.loader_image_module.img_charg.image.text =  "0"+ " / 100"
  21. MC_ecran.MC_mod.MOD_objet.contenu_img.mask = MC_ecran.MC_mod.MOD_objet.mask_module_obj;
  22. function clic_lien (evt:MouseEvent):void
  23. {
  24. num_clic_liens = evt.target.parent.name;
  25. init_mod_obj ();
  26. TweenMax.to(MC_ecran.MC_mod.MOD_objet.contenu_img, 0.2, {alpha: 0});
  27. module_app.addEventListener(TimerEvent.TIMER, module_obj)
  28. module_app.start ();
  29. }
  30. function init_mod_obj ():void
  31. {
  32. img_nom_mod = XmlListliens.(@id== num_clic_liens - 1).fichier;
  33. img_url_mod = XmlListliens.(@id== num_clic_liens - 1).dossier;
  34. }
  35. function module_obj (Tevt:TimerEvent):void
  36. {
  37. v = 0;
  38. dechargement_images ();
  39. for ( k = 0 ; k <= 100; k++ )
  40. {
  41.  if(k < 10)
  42.  {
  43.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "000" + k + ".jpg" );
  44.  }else if(k >= 10 && k < 100)
  45.  {
  46.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "00" + k + ".jpg" );
  47.  }else if(k >= 100)
  48.  {
  49.   image_mod = new URLRequest(img_url_mod + img_nom_mod + "0" + k + ".jpg" );
  50.  }
  51.  position_images();
  52.  conteneurImage_perso.contentLoaderInfo.addEventListener(Event.COMPLETE, complet_img_obj);
  53. }
  54. function dechargement_images ():void
  55. {
  56.  for ( var l:int = k ; l > 0 ; l-- )
  57.  {
  58.   MC_ecran.MC_mod.MOD_objet.contenu_img.removeChildAt(conteneurImage_perso);
  59.  }
  60. }
  61. function position_images ():void
  62. {
  63.  conteneurImage_perso = new Loader();
  64.  conteneurImage_perso.load (image_mod);
  65.  conteneurImage_perso.x = position_img_mod * k + 3.5;
  66.  MC_ecran.MC_mod.MOD_objet.contenu_img.addChild(conteneurImage_perso);
  67. }
  68. function complet_img_obj (Evt:Event):void
  69. {
  70.  TweenMax.to(MC_ecran.MC_mod.MOD_objet.loader_image_module.barre, 0.4, {scaleX: v / 100});
  71.  MC_ecran.MC_mod.MOD_objet.loader_image_module.img_charg.image.text =  String(v) + " / 100"
  72.  if(v == 100)
  73.  {
  74.   charge_mod_perso.visible = false;
  75.   charge_mod_perso.alpha = 0;
  76.   TweenMax.to(MC_ecran.MC_mod.MOD_objet.contenu_img, 1, {alpha: 1});
  77.   MC_ecran.MC_mod.MOD_objet.mask_module_obj.gotoAndPlay(1);
  78.   conteneurImage_perso.contentLoaderInfo.removeEventListener(Event.COMPLETE, complet_img_obj)
  79.  }else{
  80.   charge_mod_perso.visible = true;
  81.   TweenMax.to(charge_mod_perso, 0.4, {alpha: 1});
  82.   MC_ecran.MC_mod.MOD_objet.contenu_img.alpha = 0;
  83.  }
  84.  v++
  85. }
  86. }


Merci pour votre aide quand meme.
 
PS: pour repondre a toi "lefermier" la propriété qui permet de savoir si un loader est chargé est COMPLETE.


Message édité par guyton le 07-09-2010 à 06:50:56
Reply

Marsh Posté le 07-09-2010 à 08:34:08    

cool ça c'est bon à savoir ;)

Reply

Marsh Posté le 07-09-2010 à 12:27:21    

De rien ;)
 
Je prefere l'expliquer au cas ou il y ai une autre personne dans cette situation

Reply

Sujets relatifs:

Leave a Replay

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