Bonjour,
suite à une question posé sur le forum de media-box, je me suis décidé à faire une introduction sur le multi-chargement dans pixLib.

Ce que j'appelle le multi-chargement est en fait la mise sous forme de pile (stack) une liste d'objets que l'on veut charger. Pour réaliser ce chargement progressif pixLib possède la classe LibStack. :)

Outils

Comment utiliser la LibStack ?

Avant toute chose il faut savoir que si on utilise pixLib ce n'est pas pour simplement charger un swf ou un jpeg et le manipuler tel quel, mais bien pour charger ceux-ci directement dans une librairie de pixLib (outils qui facilite leur manipulation).
Pour faire du multi-chargement il suffit tout d'abord de construire une instance de LibStack, à laquelle on ajoute la liste des éléments que l'on veut charger ainsi que le type de librairie que l'on veut obtenir à la sortie, il ne reste plus qu'a lancer le chargement. La LibStack va charger chaque éléments de la liste, les uns après les autres et les placer dans une instance de librairie voulu, que du bonheur. :) Bien évidement à quoi nous servirait cette outils si il n'était pas fourni avec un bon gestionnaire d'événement ?! Rassurez vous tout a été pensé. ;)

Voyons maintenant ce que ça donne pratiquement.

Ajouter un élément.

public function enqueue(o:ILib, sName:String, sURL:String) : String

La fonction enqueue prends trois arguments et retourne une chaine.

  • o:ILib -> ILib est une interface, qui est implémentée par AbstractLib, une classe abstraite qui est étendu par toutes les librairies de pixLib. En français cela veut dire que l'on peut utiliser n'importe quelle instance de ConfigLoader, GraphicLib, LibStack, VideoDisplay, XMLToObject ou une classe qui implémente ILib comme premier argument de la fonction enqueue().
  • sName:String -> Il s'agit du nom qui serra donné à o:ILib (nom d'instance), c'est ce dernier qui sort en retour de la fonction.
  • sURL:String -> Il s'agit de l'URL du fichier que l'on veut charger (swf, jpeg, xml).

Les événements.

L'instance de LibStack renvoi l'ensemble des événements reçu par la librairie qui est occupé d'être chargé (ILibListener) plus un événement propre à LibStack (onLoadComplete).

  • onLoadInit -> A chaque fois qu'une librairie est finie de charger.
  • onLoadProgress -> Tout au long des différents chargements.
  • onLoadComplete -> Quand toutes les librairies sont chargées.
  • onTimeOut -> Lancé à chaque fois que le timeOut est écoulé (10 secs par défaut).

Un exemple complet avec la GraphicLib :

import com.bourre.data.libs.GraphicLib;
import com.bourre.data.libs.LibEvent;
import com.bourre.data.libs.LibStack;
 
// On crée une instance de LibStack
var oLibStack:LibStack = new LibStack();
 
// On instancie les différentes librairies que l'on veut charger en stipulant la cible et la profondeur,
et en option si le contenu est visible à la fin du chargement (true par defaut).
var gl:GraphicLib = new GraphicLib(this, 5); var gl2:GraphicLib = new GraphicLib(this, 10, false);   // On ajoute les instances de GraphicLib dans la LibStack
en précisant le nom et l'URL des fichiers à charger dedans.
oLibStack.enqueue( gl, "Animation", "anim.swf"); oLibStack.enqueue( gl2, "Photoa", "image.jpg");   function onLoadInit(e:LibEvent) : Void { trace(e.getName()); } function onLoadProgress(e:LibEvent) : Void { trace(e.getName() + ' : ' + e.getPerCent() + '%'); } function onLoadComplete(e:LibEvent) { // Ici on peut lancer une fonction qui serra exécuter à la fin de tous les chargement. } function onTimeOut(e:LibEvent) : Void { // On peut utiliser setTimeOut pour le modifier le délais de 10 secs par défaut. trace("Le chargement de " + e.getName() + " a échoué!"); }   // On ajoute s'abonne au écouteurs écouteur oLibStack.addListener( this ); // On lance le chargement oLibStack.execute();

La suite au prochaine épisode. ;)