Cet article explique comment créer un swf contenant les classes d’un framework par exemple. Cette bibliothèque de classes est développée avec haXe.
logo haxe
Présentation
Créer un swf de classes est très utile pour les applications RIA. La page HTML appelle un swf très léger qui se charge instantanément (voir l’article sur swfobject). Ensuite ce swf léger charge les swf contenant les éléments graphiques, un autre swf contenant les classes du framework utilisé…
Lorsqu’il y a des modifications graphiques à effectuer, il n’y a pas besoin de recompiler l’application RIA, seulement le swf graphique. Lors des évolutions des classes du framework (corrections de bug, nouvelles fonctionnalités…), il suffira de mettre à jour le swf de la bibliothèque. Des opérations transparentes pour l’utilisateur et rapide à mettre en place pour le développeur.
Exemple
Voici la classe haXe que j’utilise pour créer un swf contenant toutes les classes afin de créer une bibliothèque disponible pour les swf chargés dynamiquement.
C’est la classe utilisée pour créer la bibliothèque d’un framework.
Contenu du fichier hxml pour la compilation haXe : -cp F:\HAXE\Framework
-swf-version 9
-main LibraryExt
-swf-header 1:1:40:FFFFFF
–flash-strict
–no-traces
Détails
- -cp F:\HAXE\Framework : chemin vers les classes du framework.
- -swf-version 9 : créer un swf compatible avec la version 9 de flash.
- -main LibraryExt : utilise la méthode main de la classe LibraryExt.
- -swf-header 1:1:40:FFFFFF : crée un swf de taille 1px par 1px avec 40 fps (images par seconde) et une couleur de fond pour le swf FFFFFF.
- –flash-strict : compilation des classes en mode strict.
- –no-traces : désactivation automatique de tous les trace dans le code source.
Construction de la Classe LibraryExt
Pour ajouter une classe dans le swf, il suffit de les importer dans la classe :
import flash.geom.Transform; import flash.geom.Point; import flash.geom.Rectangle; import flash.display.BitmapData;
Il est possible d’ajouter autant de classes que nécessaires dans le swf.
Puis il ne vous reste plus cas mettre en place la méthode main, accompagnée de son constructeur pour la compilation avec haXe.
/** * Constructeur vide * * @return Void */ private function new() {} /** * * @method static main * @return Void */ public static function main () { _instance = new LibraryExt(); }
Classe LibraryExt complète
Pour l’exemple, j’utilise les classes Macromédia, ce qui est bien sur inutile. Pour vos applications RIA, il faut remplacer les imports par les classes de votre application ou framework flash.
// Classes import flash.geom.Transform; import flash.geom.Point; import flash.geom.Rectangle; import flash.display.BitmapData; import flash.filters.GlowFilter; import flash.filters.BevelFilter; import flash.filters.ColorMatrixFilter; import flash.filters.DropShadowFilter; /** * Used for create a library of a Framework * * @class LibraryExt */ class LibraryExt { /* constantes */ private static var _instance : LibraryExt; // L'instance unique du singleton /** * Constructeur vide * * @return Void */ private function new() {} /** * * @method static main * @return Void */ public static function main () { _instance = new LibraryExt(); } /*----------------------------------------------------------*/ /*------------- Divers -------------------------------------*/ /*----------------------------------------------------------*/ /** * Returns the string representation of this instance. * */ public function toString ():String { return "[object LibraryExt]"; } }
Articles sur le même sujet :

Salut Matthieu,
Je ne sais pas si tu connais la XiLib, c’est un truc qui pourrait t’intéresser et tu peux l’utiliser avec des bibliothèques SWFMill également.
Elle possède également un système IOC.
A voir ici .
A bienôt,
Michel
Salut Michel,
Merci beaucoup pour l’info, je vais regarder cela de plus près.
En plus, cela correspond exactement à mes besoins
Merci Michel d’avoir traduit la page d’explication de cette bibliothèque en fr : http://haxe.org/com/libs/xilib?lang=fr
@+