The loading API – Event

Après une première présentation de l’API de chargement de Pixlib, passons maintenant au système évènementiel qui tourne autour.


Le point central de la gestion d’évènement pour les chargements est la classe PXLoaderEvent.
Celle-ci propose d’écouter les évènements suivants :

  • onLoadStart : début du chargement ;
  • onLoadProgress : suivi de la progression ;
  • onLoadInit : chargement terminé ;
  • onLoadError : erreur pendant le chargement.

Le fonctionnement est identique au système évènementiel de Flash.

package
{
	public class Sample extends Sprite
	{
		public function Sample()
		{
			var loader : PXLoader = new PXGraphicLoader(this);
			loader.addEventListener(PXLoaderEvent.onLoadStartEVENT, _onStarted);
			loader.addEventListener(PXLoaderEvent.onLoadProgressEVENT, _onProgress);
			loader.addEventListener(PXLoaderEvent.onLoadErrorEVENT, _onError);
			loader.addEventListener(PXLoaderEvent.onLoadInitEVENT, _onLoaded);
			loader.load(new URLRequest("picto.jpg"), PXLoaderContext.getInstance());
		}
 
		private function _onStarted(event : PXLoaderEvent) : void
		{
			trace("Starts loading " + event.loader.request.url);
		}
 
		private function _onProgress(event : PXLoaderEvent) : void
		{
			trace(event.percentLoaded);
		}
 
		private function _onError(event : PXLoaderEvent) : void
		{
			trace(event.errorMessage);
			event.loader.release();
		}
 
		private function _onLoaded(event : PXLoaderEvent) : void
		{
			trace(event.loader.request.url + " is loaded");
		}
	}
}

Pour les chargements multiples, l’abstraction permet de toujours utiliser l’évènement PXLoaderEvent.
Cependant, pour un contrôle plus fin, l’évènement PXLoaderCollectionEvent peut être aussi utilisé. Celui-ci donnant accès aux propriétés du chargement multiple.
Les évènements associés à cette classe sont :

  • onLoadStart : début des chargements ;
  • onLoadProgress : suivi de la progression totale ;
  • onLoadInit : chargements terminés ;
  • onLoadError : erreur pendant les chargements ;
  • onItemLoadStartEVENT : début de chargement d’un élément ;
  • onItemLoadProgressEVENT : suivi de la progression d’un élément ;
  • onItemLoadErrorEVENT : erreur de chargement d’un élément ;
  • onItemLoadInitEVENT : chargement d’un élément terminé.
package
{
	public class Sample extends Sprite
	{
		public function Sample()
		{
			var loader : PXLoaderCollection = new PXParallelLoader();
			loader.add(new PXGraphicLoader(this), "MyImage", new URLRequest("picto.jpg"), PXLoaderContext.getInstance());
			loader.add(new PXXMLLoader(), "MyXML", new URLRequest("list.xml"), PXLoaderContext.getInstance());
 
			//Global events
			loader.addEventListener(PXLoaderCollectionEvent.onLoadStartEVENT, _onCollectionStart);
			loader.addEventListener(PXLoaderCollectionEvent.onLoadProgressEVENT, _onCollectionProgress);
			loader.addEventListener(PXLoaderCollectionEvent.onLoadInitEVENT, _onCollectionLoaded);
 
			//Element events
			loader.addEventListener(PXLoaderCollectionEvent.onItemLoadStartEVENT, _onElementStart);
			loader.addEventListener(PXLoaderCollectionEvent.onItemLoadProgressEVENT, _onElementProgress);
			loader.addEventListener(PXLoaderCollectionEvent.onItemLoadInitEVENT, _onElementLoaded);
 
			loader.load();
		}
 
		private function _onCollectionStart(event : PXLoaderCollectionEvent) : void
		{
			trace("Collection loading starts");
			trace("Collection loads " + event.currentLoader.request.url);
		}
 
		private function _onCollectionProgress(event : PXLoaderCollectionEvent) : void
		{
			trace("Collection progression " + event.percentLoaded);
		}
 
		private function _onCollectionLoaded(event : PXLoaderCollectionEvent) : void
		{
			trace("Collection complete");
		}
 
		private function _onElementStart(event : PXLoaderCollectionEvent) : void
		{
			trace("Element " + event.currentLoader.request.url + " starts loading");
		}
 
		private function _onElementProgress(event : PXLoaderCollectionEvent) : void
		{
			trace("Element progression " + event.percentLoaded);
		}
 
		private function _onElementLoaded(event : PXLoaderCollectionEvent) : void
		{
			trace("Element complete " + event.currentLoader.request.url);
		}
	}
}

Happy coding with Pixlib !

This entry was posted in Core, Framework, Tutorial and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">