xilib

XiLib est un paquet contenant deux classes. Elles aident à construire des applications flash modulaires.
Xilib facilite la maintenance d'une application existante : pas besoin de reconstruire un projet dans son intégralité pour corriger un boggue, mettre à jour ou ajouter un nouvelle partie à l'application.
Xilib est compatible avec Haxe flash 9. Il aide dans le chargement et l'utilisation des ressources d'une librairie SWF externe (chargement de classes, de medias, composants, plug-ins ou listener).

Installation


Pour utiliser Xilib, vous devez au préalable l'installer. Pour ce faire vous pouvez utilisez le gestionnaire de libraire de Haxe (haxelib) :
haxelib install xilib

Enfin, ajoutez -lib xilib en paramètre de compilation.

De quoi est capable Xilib ?


Xilib contient la classe XlibManager qui peut être utilisée pour :
  • charger des librairies externes spécifiques en statique dans le code de l'application (une à la fois ou plusieurs en même temps),
  • charger des librairies externes à partir d'une liste contenue dans un fichier XML,
  • faciliter l'utilisation des ressources chargées

XlibManager donne aussi accès à :

  • un système de gestionne de plug-ins qui permet de charger pendant l'exécution une ou plusieurs parties d'un projet, par exemple la partie graphique de composants,
  • un système simplifié d'événements qui permet de mettre en place, en quelque sorte, l'inversion de controle (inversion of control - IOC) dans les processus de création d'un projet.

En effet maintenir une application modulaire peut parfois se montrer fastidieux, en particulier lorsqu'il y a de nombreuses sous parties indépendantes à gérer. Et c'est là que Xilib intervient.
Xlilib utilise deux types d'objets: Xlib et Xplug. Avec cela vous pouvez utiliser l'espace de travail (workspace), contenant l'agencement des fichiers (joint à la librairie), pour travailler avec Xilib de manière aisée.

Détails sur les objets Xlib et Xplug ?


Les objets Xlib et Xplug sont des fichiers SWF qui ont été compilé avec quelques spécifications. Ils ont des extensions spécifiques (pas obligatoires mais préférées) pour les reconnaitres.
Un objet Xlib est une librairie externe téléchargeable, à la manière des librairies partagées.
Un objet XPlug peut être utilisé comme plug-in ou listener, chargé pendant l'exécution.

Les différents objets Xlib


Un objet Xlib peut être :
  • un média (Media), d'extension .swfm, contenant des sons, images, polices de caractères etc...
  • un paquet (Package), d'extension .swfp, contenant des classes ou des paquet (package) de classes.
  • un composant (Component), d'extension .swfc, contenant un micte de [Package] + [Media]

Les différents objets XPlug


Un objet XPlug peut être :
  • un Plugin, d'extension .swfpl, contenant un swf, avec une fonction statique main(), compilé sans l'option "-main".
  • un Listener, d'extension .swfl, contenant un swf, avec une fonction statique main(), compilé sans l'option "-main".

Construction des Objets :


Tous les objets xlibs (Xlib ou Xplug) doivent contenir l'adresse d'un fichier, contenant une librairie externe qui sera téléchargée, et le nom d'une ressource propre à l'application.
Si la librairie externe intéragit avec l'objet stage root, il est nécessaire que l'objet xlib contienne un paramètre stage. Ce paramètre peut être utilisé de trois manières différentes : par déclaration explicite dans le code de l'application (c'est un Sprite) ou en renseignant le chemin d'une ressource ou sa profondeur dans le fichier XML*, en séparant les profondeurs (depth) par des virgules (NdT : en anglais : "hard-coded, it's a Sprite, soft coded in the .xlibs XML file* as child depths separated by comas or child names separated by comas too"). Pour trouver la cible, XlibManager utilise le niveau root passer en argument au contructeur.
Puis vient un paramètre de domaine non obligatoire. S'il existe, il définira le domaine dans lequel les classes seront stockées, sinon le domaine root par défaut sera utilisé.
Les objets Xplug doivent ensuite définir une fonction principale du même nom que la classes contenant la fonction statique main (c'est le point de démarrage du plugin).
Enfin, Xplug contenant un Listener doit définir des paramètres à écouter, correspondant à une chaine de caractères, qui seront surveillés via le manager XlibManager (pusEvent).

Comment tout cela fonctionne-t-il ?


Les deux lignes suivantes sont un minimum pour utiliser Xilib :
xlibm = new XlibManager( flash.Lib.current );
xlibm.addEventListener( XiLibEvent.COMPLETE, onComplete );

Gestion manuelle (déclaration explicite):


Il faut construire le ou les objets Xlib, ou Xpug. Puis les passer explicitement à XlibManager pour qu'ils les charge. Par exemple :
var xlib = new xilib.Xlib( "core", "../../../xlibs/release2006/packages/core.swfp" );
xlibm.loadXlib( xlib );

Renseignement automatique (déclaration implicite):


Il faut passer à XilibManager l'adresse du fichier XML contenant toutes les librairies à charger. En voici un exemple :
xlibm.loadXlibsFromXml( "example.xlibs" );

Définition du fichier XML :


Le fichier XML contient les informations sur les librairies à charger. L'extension préférée pour ce fichier est .xlibs''. Voici un exemple de contenu du fichier (équivalent à celui qui précède) :
<xlibs>
    <package name="core" path="../../../xlibs/release2006/packages/core.swfp" />
</xlibs>

Comment récupérer mes librairies ?


Cette opération est très simple. Voici un exemple :
// Pour récupérer la définition d'une classe :
Connexion = xlibm.getClass( "core", "com.exemple.outils.Connexion" );
// Pour instancier un objet
var proxy = xlibm.getInstance( "core", "com.exemple.outils.Proxy" );
trace( "Appel d'une fonction static : " + Connexion.FONCTION() );
trace( "Appel d'une méthode d'un objet : " + proxy.uneMethode() );
// Pour surveiller le chargement de la librairie externe, via un objet ''loader'' : 
var sprite = xlibm.getLoaderInstance( "core" );

Autres exemples :


Des exemples complets sont installés dans le dossier workspace sur votre disque en même temps que xilib.
version #5099, modified 2008-12-15 20:59:34 by plonstic