Masapi - Massive Loading API
Par Cédric Tabin le lundi 18.02.2008, 09:30 - ActionScript - Lien permanent
Le projet masapi est une petite API que j'ai créée concernant la gestion du Massive Loading en AS3 (préchargement de plusieurs fichier). L'idée est d'avoir une encapsulation de tous les gestionnaires de chargements (URLLoader, Loader, Sound, URLStream) et ne plus avoir besoin de s'occuper que d'un type de fichiers (ILoadableFile).
A la base, l'utilisation est très simple : il suffit de créer un CompositeMassLoader, d'y ajouter les fichiers et de lancer le chargement.
import ch.capi.net.*; var cml:CompositeMassLoader = new CompositeMassLoader(); //ajout des fichiers cml.addFile("mesVariables.txt"); cml.addFile("maListe.xml"); cml.addFile("monAnimation.swf"); //utilise Loader cml.addFile("monAnimation2.swf", LoadableFileType.BINARY); //utiliser URLLoader //lancement du chargement (tous les fichiers en même temps, suivant l'ordre d'insertion) cml.start();
Bien sûr, ceci est un exemple basique : vous pouvez gérer toute l'architecture d'un site (avec les dépendances inter-fichiers) grâce à cette API. Par défaut, dans l'exemple ci-dessus, lorsque le chargement des fichiers est lancé, tous les fichiers seront chargés en même temps (ça peut faire mal pour la bande passante). Vous pouvez donc limiter le nombre de fichier à charger simultanément très simplement (à noter qu'il faut le faire AVANT de lancer le chargement) :
[actionscript] var cml:CompositeMassLoader = new CompositeMassLoader(); cml.massLoader.parallelFiles = 1; //chargement séquentiel //...
Vous avez également toute la panoplie des événements AS3 qui est à disposition et cela de manière simple :
//... function openHandler(evt:Event):void { trace("open"); } function progressHandler(evt:ProgressEvent):void { trace("progress"); } function completeHandler(evt:Event):void { trace("complete"); } function errorHandler(evt:Event):void { trace("error"); } cml.addFile("monAnimation.swf", null, openHandler, progressHandler, completeHandler, errorHandler, errorHandler); //également : //var il:ILoadableFile = cml.addFile("monAnimation.swf"); //il.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); //...
Voilà en ce qui concerne les bases de cette API. Je reviendrai assez vite sur les gestionnaires de chargement (MassLoader, PriorityMassLoader et ApplicationMassLoader) ainsi que sur le fonctionnement interne de l'API ! Actuellement, j'en suis à la version RC2 que j'utilise dans tous mes projets. Une fois la version 1.0 en ligne sur googlecode, j'écrirai des tutos plus avancés !