Les événements progress et complete de la classe LoaderInfo

Gérer la progression et la fin du chargement d'une image ou d'un swf en ActionScript 3 (AS3)

Le chargement est explique dans le billet : Le chargement d'images ou de swf

La classe LoaderInfo fournit des informations sur les fichiers swf chargés et sur les images chargées. Les informations fournies inclues une progression de chargement, les url du chargeur et du contenu chargé, le nombre total de bits pour le média, et la largeur/hauteur du média.

On accède aux objets LoaderInfo grâce à la propriété contentLoaderInfo de l'objet Loader.
Les événements progress et complete sont des événements de la classe LoaderInfo et non de la classe Loader. Il faut donc ajouter la méthode addEventListener() à Loader.contentLoaderInfo et non à Loader directement.

L'événement progress est évoqué régulièrement durant le chargement de l'image. L'événement complete est évoqué lorsque le chargement a réussi.

Actionscript:
  1. // création du conteneur de l'image
  2. var conteneurImage:Loader = new Loader();
  3. // url de l'image à charger
  4. var image:URLRequest = new URLRequest("images/madagascar.jpg");
  5. // Le chargement est terminé
  6. function onComplete(evt:Event):void
  7. {
  8.     // affichage du conteneur
  9.     this.addChild(conteneurImage);
  10. }
  11. // Progression du chargement
  12. function onProgress(evt:ProgressEvent):void
  13. {
  14.     var p:Number=(evt.bytesLoaded*100)/evt.bytesTotal;
  15.     trace(p);
  16. }
  17. // Evénement progress
  18. conteneurImage.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
  19. // Evénement complete
  20. conteneurImage.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
  21. // chargement de l'image dans le conteneur
  22. conteneurImage.load(image);

;-)