Depuis un moment, je suivais de près le framework Vegas développé par eKameleon. Son blog regorge de tutoriels pour mieux appréhender son framework. Quelles sont les possibilités offertes par Vegas et ses extensions ? Les performances ? L’implémentation dans un projet RIA ?
Présentation
Vegas est un Framework très complet, il contient tout un panel de classes permettant de développer des applications RIA complexes. Avec ces extension LunAS, PEGAS, KronOS, ASGard et CalistA, ekameleon a réalisé un travail formidable pour faciliter le développer Flash. Le tout en Open Source!
Le framework Vegas est sorti en version publique en Mars 2006 : Un Framework OpenSource AS2 qui a du chien !
Vegas est compatible AS3 et AS2, ce qui devrait ravir beaucoup de développeurs flash.
L’extension LunAS
L’extension LunAS est un framework fournissant des composants pour construire une interface graphique :
- La gestion des textes.
- Tous les types de boutons.
- Plusieurs types de container.
- Des scrollbars.
Pour avoir une meilleurs idée des possiblités de LunAS, je vous conseille d’installer les sources LunAS via SVN. Il ya tout plein d’exemples pratiques pour apprendre à utiliser ses classes.
Pour cette première application, je n’ais pas utilisé LunAS pour la gestion des composants. J’ai préféré développer le framework Delfiweb AS3. Celui-ci s’occupe uniquement des UI (User Interface). Il permet de construire tout ce qui est combobox, boutons, scrollbar…
La version actuelle de Lunas ne possède pas tous les composants dont j’avais besoin. J’ai encore querlques difficultés à comprendre toutes les fonctionnalités et la manière de les implémenter pour donner vie à des swf contenant uniquement le graphisme d’un bouton, d’une scrollbar ou autre.
A terme, j’utiliserai complètement LunAS pour la création des composants d’interface, qui à ce que mon framework étende les classes LunAS implémenter les fonctionnalités me faisant défaut.
L’extension CalistA
Cette extension contient plusieurs classes de cryptage Action Script. Attention, certaines classes sont en cours de développement dans la version AS3 (cryptage TEA).
Possiblités de cryptage offertes par CalistA :
- MD5.
- SHA1.
- TEA (en cours de portage AS3).
- Base64.
- Base8.
- LZW : compression / décompression des chaines de caractères.
J’utilise une partie de l’extension CalistA dans l’application Musicotest.
Exemple d’application RIA
Avec presque 2 mois de lecture et compréhension des tutoriels sur Vegas, voici ma 1ère application réalisé avec le framework vegas et le framework delfiweb (pour les User Interface : combobox, bouton…) : un quizz musical
Caractéristiques
- Multi langue : français, anglais, espagnol.
- Configuration et données via des fichiers eden chargés à la volée. Le maximum d’infos sur la configuration des objets est effectué via eden.
- Gestion du graphisme dynamique (changement complet de thèmes possible juste en modifiant le path des fichiers eden (via flashvars).
- Implémentation de google analytics.
- Utilisation du config via un fichier eden.
- Utilisation des polices dynamiques via swfmill (question de préférence) et intégré à l’appli par eden ioc.
- Utilisation du remoting amfphp via une config eden.
- Chargement via eden des classses composants l’application pour limiter au maximum la taille du swf principal de l’appli (75ko environ).
- Séparation de la création des objets dans plusieurs fichiers eden pour la structure et la relecture par d’autres développeurs.
Exemples de thèmes
- Quizz Musical Ferrari.
- Quizz Musical ABS Bellissima.
- Quizzz Musical RadioFG.
- Quizz Musical par défaut.
Le fichier de configuartion principal de l’application pour le thème par défaut : http://www.musicotest.com/widget/eden/context/application_default.eden
Exemple de structuration des informations dans plusieurs fichiers eden :
// context
{ resource : “application/model.eden” },
{ resource : “application/view_tooltip.eden” },
{ resource : “application/view_data.eden” },
{ resource : “application/view_background.eden” },
{ resource : “application/view_playlist.eden” },
{ resource : “application/view_combobox.eden” },
{ resource : “application/view_blogshare.eden” },
{ resource : “application/view_popup.eden” },
{ resource : “application/view_language.eden” },
{ resource : “application/view_master.eden” },
{ resource : “application/controller.eden” },
{ resource : “net/service.eden” }
Au niveau du code
J’ai préféré utiliser la diffusion des évènements plutôt que le pattern visiteur. L’implémentation du design pattern Model View Front Controller avec Vegas est grandement simplifié. Au final, nous obtenons une application AS3 stable, fonctionnelle et l’ajout de fonctionnalités non prévues conserve la structuration du code (ajout de nouveaux évènements, création des vues…).
1er ressenti quand à l’utilisation de vegas dans du développement flash AS3 :
- Apprentissage de vegas (très) simplifié avec les tutoriels et surtout la mailing list.
- Il m’a fallu un peu plus d’1 mois et demi pour utiliser quelques options de bases de vegas et développer ma première RIA flash.
- J’ai également du apprendre l’AS3. Je connaissais bien l’AS2 et HAXE.
Conclusion
Je trouve que le framework vegas est fabuleux, il possède énormément de fonctionnalités gérées en interne.
J’ai hâte d’en découvrir de nouvelles avec les prochains tutoriels.
Je retiens donc vegas pour mes futurs développement d’applications RIA.
Par rapport à pixlib, vegas implémente des fonctionnalités quelques peu différentes. Avec l’IOC de vegas, les swf sont un poil plus lourd en poids mais rien d’alarmant.
Vegas est super complet. Je connais peu des possibilités de ce framework tellement il est énorme. En fonction de mes besoins et des prochains tutoriels, cela devrait s’améliorer.
Régulièrement, sur Delfiweb, je publierais des tutoriels au fur et à mesure de mon apprentissage de Vegas et ses extensions. Il y aura des exemples, avec du code et des explications des fonctionnalités de Vegas.
Compléments d’information
- Installer / Télécharger les sources de Vegas et de ses extensions : Vegas installation.
- Le groupe google code pour les sources de vegas : Framework Vegas.
- La mailing list : très utile pour discuter et comprendre l’utilisation de Vegas et ses extensions.
- Les tutoriels d’ekameleon sur son framework vegas. Je vous conseille de prendre le temps de lire et d’assimiler tous ses tutoriels. De plus, ces tutoriels expliquent des concepts de programmation très intéressants (Design Pattern Visitor, MVC, gestion des évènements…).
Aucun article sur le même sujet.

Merci pour cet article traitant de VEGAS
Il ne faut pas oublier au passage le travail effectué sur ‘Maashaack‘ et donc le package ‘system’ contenu dans les sources de VEGAS qui devient au fur et à mesure un package puissant et standard qui va absorber au fur et à mesure les packages les plus importants de VEGAS et ses extensions (system.events, system.process, system.evaluators, etc.)
PS : tu as du voir que j’ai mi à jour une nouvelle branche dans AST’r avec un exemple allégé du projet eGallery en simplifiant à mort l’exemple de base et en supprimant l’utilisation du pattern Visitor et la connexion via AMFPHP pour que la compréhension du pattern MVC et du pattern IoC soit simplifiée
EKA+
Oui j’ai lu les messages sur la mailing list et toutes les améliorations que tu as effectué.
Je n’ais pas encore mis à jour vegas via le svn.
J’attends de finaliser une application flash importante.
Pour ensuite effectuer la mise à jour et modifier le code de mon appli à tête reposé. Il faut que je regarde tes dernières modif avec attention ainsi que tes exemples mis à jour. J’ai cru comprendre que l’utilisation de certaines classes, notamment les évènements ont été modifié en même temps que leurs passage dans ‘Maashaack‘.
En tout cas, tous les jours je découvre des fonctionnalités intéressantes dans vegas…
Tout dépend la version de VEGAS que tu utilises
Mais en général je fais des branches pour fixer les versions importantes (dernière en date avec la 1.3.0.1292)
Dans la 1.3.0.1292 j’ai fixé une version qui contient le package system.events.
Dans le trunk actuel j’ai fait du refactoring et maintenant system.process remplace andromeda.process.
A noter que quand tu bosses sur un projet avec une dépendance sur VEGAS ou autre je te conseille vivement pour éviter les soucis de noter la révision de VEGAS que tu utilises à ce moment là et sinon de faire un “export” SVN des sources de VEGAS et de les mettre dans un répertoire “dependencies” ou “libs” de ton projet pour éviter les soucis
PS : même si j’avoue que pour ma part je préfère largement perdre 15 minutes maxi pour reprendre mes projets et les mettre à jour (maintenir le code en fonction des mises à jour)
Cela permet de se mettre à jour tout le temps et du coup de mieux comprendre le code lui même
eKA+