Masapi 2.0 pour bientôt
Par Cédric Tabin le lundi 09.03.2009, 08:00 - ActionScript - Lien permanent
Si vous jeter un oeil au répository de Masapi, vous verrez qu'il y a eu pas mal de mises à jour depuis la version 1.5 (révision 95). Actuellement à la révision 140, je pense sortir la version 2.0 sous peu !
Voici quelques brefs exemples de code pour vous montrer les principales fonctionnalités de Masapi 2.0 !
Tout d'abord, l'ajout de fichiers dans la file de chargement (loading queue) d'un CompositeMassLoader est beaucoup plus souple :
var cml:CompositeMassLoader = new CompositeMassLoader(); //mode strict var file:ILoadableFile = cml.addFile("file.txt", LoadableFileType.TEXT, 5); file.properties.put("aVariable", "aValue"); //mode dynamique cml.addFile({url:"file.txt", type:LoadableFileType.TEXT, priority:5, aVariable:"aValue"}); //autre variante cml.addFile(new URLRequest("file.txt"), LoadableFileType.TEXT, 5);
Il est également possible de nommer un CompositeMassLoader pour le récupérer ensuite de n'importe où dans une application :
var cml:CompositeMassLoader = new CompositeMassLoader("astorm-demo"); //... var rml:CompositeMassLoader = CompositeMassLoader.get("astorm-demo");
Les événements sont directement envoyés depuis le CompositeMassLoader. Par ailleurs, le nouvel événement MassLoadEvent.FILE_PROGRESS permet de récupérer les données précises sur un fichier en cours de chargement :
var cml:CompositeMassLoader = new CompositeMassLoader(); //... cml.addEventListener(MassLoadEvent.FILE_PROGRESS, progressHandler); function progressHandler(evt:MassLoadEvent):void { var currentFile:ILoadableFile = evt.getFile(); trace(currentFile); } //lance le chargement cml.start();
La récupération des données est beaucoup plus claire à la lecture :
var file:ILoadableFile = cml.addFile("anim.swf"); //... var ldr:Loader = file.getData(DataType.LOADER);
L'inclusion des variables dans les URL, très pratique pour les changement de langues ou alors lorsqu'un fichier SWF est destiné à être mis dans différentes page HTML :
var cml:CompositeMassLoader = new CompositeMassLoader(); var variables:IMap = cml.loadableFileFactory.defaultVariables; //création des variables variables.put("BASE_PATH", "./resources"); variables.put("PICTURES_PATH", "${BASE_PATH}/pictures"); //création des fichiers cml.addFile("${BASE_PATH}/engine.swf"); cml.addFile("${PICTURES_PATH}/header.png"); cml.start();
Il y a également eu différentes modifications dans les données et comportement par défaut (typiquement un fichier image est chargé avec un Loader, un CompositeMassLoader utilise un PriorityMassLoader, ...) ainsi que de nouvelles classes utiles venant parfaire l'API (Properties, ParseUtils, VariableReplacer, ...).
Pour une utilisation un peu plus avancée, il est désormais possible de spécifier une liste de fichiers à charger sans pour autant mettre de dépendance :
<?xml version="1.0" encoding="utf-8" ?> <application> <variables> <var name="BASE_PATH">./resources</var> <var name="PICTURES_PATH">${BASE_PATH}/pictures</var> </variables> <files> <file url="${BASE_PATH}/engine.swf" /> <file url="$PICTURES_PATH}/heander.png" /> </files> </application>
var configLoader:ApplicationConfigLoader = new ApplicationConfigLoader(); configLoader.addEventListener(Event.COMPLETE, completeHandler); configLoader.load(new URLRequest("config.xml"); function completeHandler(evt:Event):void { //récupère tous les fichiers var files:Array = configLoader.applicationContext.enumerateAll(); trace(files); }
Et il y a évidemment plein d'autres nouvelles fonctionnalités de ce coté-la ! Je tâcherai de faire des tutoriaux plus avancés lorsque la version 2.0 sera officielle.
Encore deux mots sur Masapi : bien que ce projet s'adresse à des développeurs, j'ai essayé de le rendre un peu plus simple d'utilisation aux personnes moins à l'aise en AS3. Je suis donc ouverts aux idées qui pourraient survenir en ce sens
Pour terminer, voici une listes des pincipaux changements depuis la version 1.5 :
- package ch.capi.net.files rendu publique (classes de chargement)
- ajout des index sur les fichiers (permet de savoir leur position dans la loading queue)
- ajout de la gestion des variables (url dynamique) dans les dépendances
- support Bitmap pour la récupération des données
- nouvel événement MassLoadEvent.FILE_PROGRESS
- possibilité de nommer un CompositeMassLoader ou ApplicationContext et de le récupérer n'importe ou
- possibilité de gérer des dépendances fictives (et dossiers fictifs)
- possibilité de détruire un fichier plus utilisé
- renommage du package ch.capi.core en ch.capi.net.app
N'hésitez pas à me donner vos retours et critiques ! Et en prime, deux sites réalisés par Kalou utilisant Masapi : Courmayeur-Montblanc et ValaisArtDeVivre.
Commentaires
Bien sympathique tout ça.
Beau boulot!
Un grand bravo,
La version deux n'est pas encore sortie, mais l'on ne peut s'attendre qu'à quelque chose de bien vu les précédentes versions.
Je pense que dans les prochaines semaines, voir prochains mois, je me rapprocherai un peu de toi, car j'ai un projet qui utilise un système d'arbre, où chaque nœud à une donnée à charger.
Le chargement est très linéaire et pas du tout souple. Il faudra que je regarde comment utiliser Masapi pour gérer le chargement de mes ressources tout en concevant cette structure d'arbre.
Tous mes encouragements pour ces avancées,
je suis un fidèle utilisateur de masapi et je ne peux que supporter l'élan.
Bonne continuation
Beau travail.
Felicitation, je suis impatient d'utiliser la nouvelle version!
Ahhhhh bah voilà ! Bravo, ça m'à l'air d'être une api bien complète et simple d'utilisation maintenant ! (j'avoue ne pas avoir encore été totalement convaincu jusquà maintenant, mais c'est un avis tout à fait perso)
Merci Capt'ain, beau travail
Excellent travail!!
Hâte de tester
Bravo!
Perso depuis que j'ai decouvert Masapi je n'utilise plus que ça et j'en ai pas encore fait le tour de toutes ses possibilitées.
Encore un site ou tout les flash utilisent Masapi http://www.verbier.ch
Bonjour,
Joli travail, ce framework fonctionne très bien et est super facile à utiliser ! :]
J'attends également avec impatience la nouvelle version, aussi j'aimerais savoir s'il est possible (actuellement ou dans la prochaine version) d'effectuer un "filtre" sur la taille des fichiers (concrètement annuler ou mettre en priorité moins élevée les fichiers qui auraient une taille supérieure à n ko).
Bonne continuation.
Hello,
Merci pour les retours
@Gugusse> oui tu pourras le faire en passant par une ILoadPolicy. Actuellement elle est uniquement processée après le download, mais elle sera aussi faite avant, ce qui permettra de gérer pas mal de chose !
@++
En effet, joli framework. Je l'ai découvert il y a peu et l'essayer, c'est l'adopter !
Je me demandais justement comment avoir une "liste de fichiers à charger sans pour autant mettre de dépendance", il semble que je vais trouver mon bonheur avec la prochaine version que j'attends impatiemment ^^
Merci Capt'ain et bonne continuation !