Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

25mai/103

Flex Library – Gérez vos évènements AS3 avec EventController

EventController est une petite librairie AS3 qui pourrait vous aider dans vos projets AS3 et/ou Flex. Au plus on essaie de créer une architecture ayant un couplage faible, plus on utilise d'évènement qui permettent de s'affranchir de ce couplage et permettent d'obtenir des composants ré-utilisables.

Comme le plus souvent, on veut transporter de la données avec l'évènement, on va créer de nouveaux évènements personnalisés. On se retrouve donc à écouter et à propager de nombreux évènements et leur gestion peut-être difficile, ce qui peut mener à des fuites mémoire.

EventController, Event Management made easy. An Actionscript 3 Library

EventController API Documentation

La librairie AS3 EventController essaie de rendre cette gestion plus aisée à travers plusieurs points tout en utilisant le système évènementiel de base de l'AS3.

Utilisation de la classe EC (EventController)

Dans un contexte simple, vous auriez, pour vous inscrire à un évènement:

obj.addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0.0, useWeakReference:Boolean = false):void

Avec EventController, on passe par une méthode static de EventController et on passe en plus, l'objet sur lequel on va écouter l'évènement dans la méthode:

EC.add(obj,type,listener,false,0,false,"myCluster");

Dans ce cas, l'EventController est global (un singleton global au contexte applicatif). Vous pouvez aussi créer un LEC (Local EventController). Pour cela, il suffit de créer une instance du LEC et les méthodes de l'instance du LEC sont les mêmes que celles de l'EC:

var lec:LEC = new LEC();
lec.add(obj,type,listener);

Clusters d'évènements

Un des plus de cette librairie est le système de cluster. Celui va vous permettre de créer des "groupes d'évènement". Vous pourrez ensuite gérer l'ensemble des évènements du groupe d'un seul coup.

25mai/102

Comparaison de performances entre rendu Vectoriel et Bitmap avec Flash Player (cacheAsBitmap)

Il y a quelques mois, j'ai développé une application de dessin à-la-Illustrator pouvant gérer des centaines, voire des milliers d'objets à l'écran. Ces objets sont tous des objets vectoriels, dessinés avec Flash Player (moveTo, lineTo & Co) et quand on ajoute autant d'objets, les performances générales de l'application commencent à souffrir. C'est à ce moment-là que j'ai commencé à m'intéresser à l'optimisation des éléments vectoriels.
Heureusement, cela fait longtemps que d'autres se sont posé la question, surtout depuis Flash Player 8 (qui était bien plus lent que FP9) et ont écrit de très bon articles à ce propos. Même si ces articles ont été écrits il y a 3, 4 voire 5 ans, ils sont toujours pertinents. Voici ma sélection:

Comme cela est précisé dans le 2eme article, Flash Player est très bon pour afficher rapidement un objet vectoriel mais cela lui demande du calcul processeur et si les calculs sont trop nombreux, votre CPU arrive à saturation et votre application va se mettre à ramer.

Aral Balkan propose un petit exemple très pertinent pour illustrer ses propos. Je l'ai rapidement recréé sous Flash Builder 4 (l'exemple de base était fait avec Flash Pro) et voici ce que cela donne:

Flex Source Code Download: Télécharger le code source complet de l'application

This movie requires Flash Player 11

Fonctionnement de l'application de test

L'application est très simple, au départ, on ajoute 1000 lignes (vectorielles donc) aléatoires à un UIComponent.

Quand l'utilisateur appuie sur "Start", on va faire bouger cet UIComponent en x/y de manière aléatoire. Le changement de position de ce composant va demander un nouveau rendu à Flash Player.

Le bouton "Make it Vector / Make it Bitmap" permet de basculer la propriété cacheAsBitmap (si on clique sur Make It Bitmap, cela passe cacheAsBitmap à true).

La propriété "cacheAsBitmap" indique à Flash Player qu'il doit prendre "une capture" du composant et la garder en temps que Bitmap et plus en temps qu'objet vectoriel.

22mai/100

Comparaison des performances Flash Player 10 et 10.1 (debug et non-debug) par IBM

IBM a mis depuis longtemps un pied dans l'univers Flex à travers les composants ILOG Elixir (vendus sur le shop d'Adobe). Ces composants sont de très bonne facture mais le prix s'en ressent ;) .

Des diagrammes, du Gantt, de la carto, des TreeMap, des Charts 3D et j'en passe . Si vous voulez y jeter un oeil, c'est par ici:

Démos IBM ILOG Elixir Enterprise

Sur ses blogs développeur, IBM publie aussi des articles portant sur Flex dont un très intéressant que voici:

Performance: impact of the Flash Player version and of the "optimize"  compilation flag

En utilisant leurs composants, qui sont assez lourds en termes de calculs, ils ont réalisé quelques benchmarks plutôt encourageants sur la prochaine version de Flash Player, FP 10.1. Ils ont aussi comparé leur résultats avec les versions Flash Player Debug et Non-Debug (public). L'écart est assez important, cela signifie que si votre application tourne bien sur votre poste avec une version Debug, elle tournera encore mieux sur les postes "normaux", bonne nouvelle :) .

22mai/103

BarCamp sur les Interfaces Riches @ Lyon le 23 Juin 2010

Peu d'évènements liés à Flex se passent à Lyon, il est donc intéressant d'en parler.

Et cerise sur le gâteau, c'est gratuit et il y a un bar, que demande le peuple^^.
Ce BarCamp se passera sur le campus de la Doua (Université Lyon 1), le 23 Juin à 17h au CyberCafé.

barcampheaderblog

Vous trouverez toutes les informations sur l'évènement sur cette page:

BarCamp interfaces riches, Lyon, 23/06

Même si l'évènement est gratuit, il faudra quand même vous inscrire:

Inscription BarCamp @ Lyon

Et il y a même un groupe Facebook, vous ne pourrez pas dire que vous ne saviez pas.

Au programme, plusieurs présentations notamment données par Atos et l'université de Lyon 1 (on m'a confirmé que d'autres présentations seraient au programme):

  • Nouvelles expériences utilisateurs multi-canal grâce aux RIA (ipTv, bornes interactives);
  • OpenScales: client cartographique basé sur les technologies ActionScript3 / Flex / AIR;
  • Comment développer une RIA moderne en Javascript avec RESTHub.

Si vous ne connaissez pas OpenScales, c'est un projet open source permettant d'avoir un client cartographique en technos AS3. Lancé au départ par plusieurs employés / stagiaires de chez Atos, le projet est maintenant bien lancé et attire pas mal de contributeurs / patchers.

Quelques exemples d'applications crées sur une base OpenScales:

They use OpenScales

Et leur application de démonstration:

Démo OpenScales

Voilà, niveau technique c'est plutôt sympa avec la gestion de plusieurs standards géographiques (WMS / WFS / KML) , reprojection de ponctuels à la volée et une API que vous pouvez étendre assez facilement.

J'ai failli rejoindre ce projet à son lancement mais par "conflit d'intérêt", cela ne s'est pas fait. En fait, mon job est de développer des applications cartographiques et j'ai moi aussi crée une API SIG comme celle d'OpenScales pour Business Geografic, un peu plus poussée (outils de dessin plus puissants, support GMaps et TileCache, gestion plus fine des Markers, perfs ...) donc je ne pouvais pas faire les deux ^^. J'aurai bien aimé présenter mon travail mais comme il est "propriétaire", ce n'est pas vraiment possible. Vous verrez par contre le résultat bientôt sur un site public que je vous ferai partager sur ce blog ;) .

Bref, comme cet évènement se situe à 500m de là où je bosse, je serai présent :D

20mai/100

Flash Player 10.1 et Air 2 en beta public sur Android 2.2

Le boss d'Adobe en avait parlé, Adobe a bien annoncé la release de Flash Player 10.1 pour le système d'exploitation Android. Il ne sera disponible que pour les systèmes Android 2.2 (a.k.a Froyo pour frozen yoghurt) qui a été dévoilé à la conférence Google I/O.

Voici un petit aperçu de ses fonctionnalités:

Pour l'instant, sont concernés les portables suivants:

  • Nexus One
  • Motorola Droid
  • HTC Incredible
  • Sprint EVO

Si par chance vous disposez d'un de ces portables, vous pouvez télécharger Flash Player 10.1 et Adobe Air depuis le Market d'applications.

Flash Player 10.1 sur les labs Adobe

Notez que le Nexus One est disponible chez SFR (en France donc) depuis quelques jours. On parle de la beta de Air 2 sur Android. Des applications natives qui partagent le même code pour Windows, Linux, Mac et Android, en profitant de toutes les fonctionnalités natives, plutôt excellent:

Air 2 beta sur Android

Et puis Google a aussi dévoilé la Google TV, très prometteur avec un bon vieux Flash Player 10.1 dessus pour profiter de la navigation internet sur votre TV: