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 en AS2 et compatible avec le compilateur MTASC.
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’utilisateurs et rapide à mettre en place pour le développeur.
Exemple
Voici la classe Action Script 2 que j’utilise pour créer un swf contenant toutes les classes AS2 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 du framework delfiweb.
Paramètres MTASC pour la compilation : -main -swf biblio.classes.swf -group -version 8
Détails
- -main : appel de la méthode main de la classe.
- -swf : crée le swf biblio.classes.swf.
- -group : regroupe toutes les classes dans le même clip.
- -version 8 : créer un swf compatible avec la version 8 de flash.
Construction de la Classe Library
Pour ajouter une classe dans le swf, il suffit de la stocker dans une variable static :
private static var fComponent:Function = flash.geom.Transform;
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 compatibilité avec MTASC.
private function Library (container:MovieClip){} public static function main (container:MovieClip) { _instance = new Library(container); }
Classe Library complète
//Classe Macromedia 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; // Classes PixLib de Francis Bourre import com.bourre.commands.Delegate; import com.bourre.commands.Command; class Library { /* constantes */ private static var _instance:LibraryExemple; // L'instance unique du singleton //Classe Macromedia private static var fComponent27:Function = flash.geom.Transform; private static var fComponent28:Function = flash.geom.Point; private static var fComponent29:Function = flash.geom.Rectangle; private static var fComponent30:Function = flash.display.BitmapData; private static var fComponent31:Function = flash.filters.GlowFilter; private static var fComponent32:Function = flash.filters.BevelFilter; private static var fComponent33:Function = flash.filters.ColorMatrixFilter; private static var fComponent34:Function = flash.filters.DropShadowFilter; // Classes PixLib de Francis Bourre private static var fComponent38:Function = com.bourre.commands.Delegate; private static var fComponent39:Function = com.bourre.commands.Command; /** * Constructeur vide * * @method Library * @param container : le movie clip sur lequel le swf est instancié * @return Void */ private function Library (container:MovieClip){} /** * C'est le point d'entrée du programme, appelé sur la première image du fla, * elle est compatible MTASC * * @method static main * @return Void */ public static function main (container:MovieClip) { // appel uniquement lors de l'ouverture de l'appli. _instance = new Library(container); } /** * Renvoi la représentation de l'objet sous forme de chaîne. * @usage trace(myPH); * @return la représentation de l'objet sous forme de chaîne. */ public function toString ():String { return "[object Library]"; } }
Articles sur le même sujet :

salut j’essaie de faire fonctionner avec les classe FP8 et FP9
je pense que c’est faisable de toute façon j’irais jusqu’au bout je vais aller voir aussi du coté de swfc de swftools je crois qu’ils ont sorti une nouvelle version qui peut gérer les classes AS3
je connais aussi haxe je l ‘utilise mais je cherche à utiliser des sources AS3 .