Flex Builder 3 Débutant ? Découvrez Flex et Adobe® Flex® Builder 3

Archive de février, 2010

25
fév

Sortie de Flash Player 10.1 beta 3

La nouvelle beta de Flash Player 10.1 est sortie, n'hésitez pas à la tester et à remonter les bugs que vous trouvez dans le JIRA Adobe ;) .

Télécharger Flash Player 10.1 beta 3

Ajouter des bugs Flash Player sur le Adobe Bug and Issue Management

Bien sûr, n'oubliez pas de chercher votre bug dans la base avant d'en ajouter un pour ne pas faire de duplicatas ;) .

La liste des bugs corrigés depuis la beta 2 est disponible sur le JIRA. Voici un petit extrait pris depuis le blog de Ted Patrick:

Graphics:

+DisplayObjects with overlapping strokes sometimes disappears when redrawn
+[FP-3621] Removing and re-adding a Flash movie from the DOM using removeChild and
appendChild causes display issues in Internet Explorer
+[FP-2290] PerspectiveProjections have problems with click events
+3D Facebook game renders incorrectly in Beta 1 and Beta 2
(http://apps.facebook.com/dealornodeallive/)
+'Show Redraw Regions' draws on the entire swf even though only a part of it is changing.
+Images render blank when scaled to specific sizes see example.

Networking:

+The Settings dialog doesn't correctly allow Local Storage requests.
+[FP-1050, FP-1358] Escalation – Active Directory is causing Local Shared Objects to fail when the
information is saved on a network location.
+Safari Only: File Reference upload test always results in a cancelled event.
+Time stamp doesn't get properly set in the request using URLRequestHeader.
+FileReference.download does not return an error even it doesn't have enough space to save the
file to download.
+[FP-1585] loaderInfo Event.COMPLETE not dispatched if wmode is "transparent" or "opaque".
+[FP-2746] Multi-domain inter-VM LocalConnection failure

Audio/Video:

+[FP-3567] Firefox Crash/Hang when running music on Playlist.com
+[FP-3921] Flash Player 10.1 beta 2 crashes Internet Explorer 8 in 32bit mode on Playlist.com
+In Firefox, clicking quickly on the stop music / play music button before it has completed loading
the music, causes a crash
+[FP-3675] Windows energy saving does not work after viewing video in full-screen mode
+Support for the Broadcom BCM70015 ("FLEA") hardware decoder support is not yet enabled.
+NetStream.Buffer.Full event is not fired correctly.
+On Broadcom graphics accelerators, NetStream.Step.Notify event doesn't fire when seeking
backwards on video playback.
+Video loads slowly or crashes on Internet Explorer when using Nvidia graphics card.
+Systems with NVidia graphics processors crash on certain videos on dailymotion.com
+Toggling between SD and HD on youtube.com causes a crash on Broadcom Graphics
Accelerators.
+Audio Stream stays open when playback is paused not allowing computers to be place to sleep
+Clicking on/off HQ or HD button on some of the Youtube and CastTV.com trailer videos causes
intermittent crash.
+On certain graphics cards, green artifacts appear when seeking in video.
+[FP-1399] Videos on nbc.com do not play on Linux OSes.
+With hardware decoding, cbs.com pause/play video buttons and seeking function intermittently.
+On Systems with XP and ATI Graphics cards, hulu.com video can hang after a seek
+On systems with a Broadcom Graphics Accelerator, seeking on youtube.com videos can result in
a crash.
+On the Mac PPC, Safari crashes when streaming a video from some web pages
+Audio sync issues when streaming FLV over RTMPE on systems with a Broadcom Graphics
Accelerator.
+Some videos have their first few frames dropped on systems with a Broadcom Graphics
Accelerator.
+Some videos crash intermittently on a Broadcom Graphcis Accelerator.
+[FP-3081] Some videos on http://www.cbc.ca/video/ never begin playing on Linux OSes
+Americanidol.com videos play only on mouse move in Firefox browser in Vista 64-bit OS
+Video freezes sometimes when using multi-bit rate streaming in conjunction with hardware video
decoding.
+Scaling of videos (fullscreen) causes blockiness or pixilation.
+Youtube video stalls after seek backwards.
+Calling close after calling seek without calling play first won't actually close stream.
+Attaching and detaching Audio while publishing with record option leads to loss of data.
+Problem in playing only audio or only video after audio video h264 streaming in same subscriber.
+When AAC is published from FME, setting buffer from default or 0 to something else e.g. 1 causes
playback stop with buffer length growing.
+Play video then stop, remove from the display list, the CPU usage is about 2.5 – 3.8% higher then
before playing the video.
+Live mp3 playback loses audio after 20 min or so.
+[FP-220] Video stops playing if one right clicks in the browser, even if its in a different tab.
+Screen dimming while playing video in fullscreen mode.
+Audio playback worsens on Mac while switching browser tabs with certain videos.
+[FP-178] -Video.clear fails. Clears only 1 pixel when Video.smoothing = true.
+[FP-1936] win32 microphone deadlocks on unplug active USB microphone.

Lire la suite: 'Sortie de Flash Player 10.1 beta 3'

23
fév

OpenPlug: Déploiement d'une application sur un portable Android (sous Windows XP et 7)

Tout d'abord, je vais réviser un peu mon avis sur OpenPlug d'hier. Il faut en fait s'y intéresser un peu plus et apprendre à s'en servir, j'ai sûrement fait une review un peu rapide ;) . Après avoir regardé dans les grandes lignes, les autres "framework" permettant de créer des applications mobiles natives multi-plateforme (pas sur un base Flex, mais sur une base HTML/JS/CSS), je me suis aperçu qu'il existait 3 grandes options:

  • Appcelerator: Cela semble mature, avec un bon packaging, un très beau site internet, sous licence MIT. Compatible seulement avec Android et iPhone
  • PhoneGap: Moins impressionnant, sous licence MIT, sens le projet qui va couler. Compatible avec Android, iPhone et BlackBerry
  • Rhomobile: L'alternative commerciale. Supporte iPhone, BlackBerry, Windows Mobile, Symbian, Android. Avec en bonus, des outils de synchronisation et autres (payants).

Bref, du bon et du moins bon et il reste que je n'ai pas envie de faire du JavaScript en attendant Flex Slider ou FP 10.1 sur Android. OpenPlug mérite donc que je m'y intéresse de plus près, ce que je vais faire.

Déploiement d'une application Android

On revient à ce tutorial qui va vous expliquer en détail comment déployer une application Android (.APK) sur votre téléphone. C'est ce que j'ai du faire pour pouvoir transférer l'application générée par OpenPlug vers mon HTC Magic G2. Comme je l'ai fait à cheval entre mon taff (Windows XP) et chez moi (Windows 7 64 bits), vous aurez même la résolution de quelques problèmes qui n'arrivent que sur certains OS.

Vu que j'ai passé quelques heures à chercher le pourquoi du comment sur de nombreux forums / docs, je pense que cela va vous sauver du temps si vous tentez de faire la même chose.

Création de l'application Android avec Elips

Pour créer votre première application avec Elips (OpenPlug), inscrivez-vous sur leur site, allez dans la section développeur et téléchargez l'installeur. L'installation se passe très normalement, rien à expliquer à ce niveau là. Ensuite, suivez le tutorial pour le développement d'une application sous Windows Mobile (arrêtez-vous avant le déploiement du .cab quand même).

Avant de pouvoir compiler votre application en natif (.apk), il va vous falloir une clé développeur Android (obligatoire pour la compilation). C'est un peu comme les certificats que l'on génère pour les applications Air, vous pouvez en créer un pour vos besoins de développement.

Génération d'une clé Android privée (keystore)

Pour générer votre clé, vous allez avoir besoin d'un utilitaire nommée "keytool". Celui-ci se trouve dans le SDK Android que vous pouvez télécharger ici:

Télécharger le SDK Android

Voici ensuite les grandes étapes à suivre:

  • Télécharger le SDK Android
  • Dézipper dans un répertoire (à la racine du C: par exemple)
  • Ajouter une variable au PATH (variables d'environnement Windows): (C:\android-sdk-windows\tools)

addToPathAndroidSDK

  • OK, OK, Appliquer, on ferme tout
  • Ouvrir un invité de commande (Démarrer > Exécuter > cmd)
  • Taper "keytool", une liste de commande devrait apparaitre. Si oui, l'installation et la configuration du SDK Android sont OK, sinon revenir en arrière.

keytool-cmd

  • Générer un clé . Pour cela, voici les arguments essentiels de la commande:
    • -keystore: Nom de votre fichier .keystore qui va contenir votre clé
    • -alias: Nom par lequel vous allez référencer votre fichier

Vous aurez donc quelque chose comme:

keytool -genkey -v -keystore flextut-key.keystore -alias flextut -keyalg RSA -validity 10000

  • Le mot de passe de votre clé vous sera demandé. Choisissez un mot de passe difficile (plus de 6 caractère obligatoirement). Pour la suite, le mot de passe sera "flextutorial"

keytool-cmd-2

  • Tapez deux fois le mot de passe souhaité (il ne sera pas affiché à l'écran par sécurité, tapez sur Entrée pour valider)
  • D'autres informations vous seront demandées pour compléter l'opération (nom / prénom, organisation, location, …)
  • Quand on vous demandera de confirmer ces dernières instructions, tapez "oui"
  • Appuyez sur Entrée quand on vous redemandera votre mot de passe
  • La console devrait normalement indiquer [Stockage de flextut-key.keystore]

keytool-cmd-3

Votre clé (un fichier .keystore) sera conservée dans votre répertoire utilisateur (C:\Users\fab par exemple sous Windows 7). Vous en avez fini avec la génération de la clé.

Compilation de votre application Flex pour Android

Grâce à votre clé (fichier .keystore), vous pouvez maintenant créer tranquillement vos application pour Android. Pour la compilation, vous pouvez suivre le tutorial d'OpenPlug. C'est assez simple, il faut aller dans les propriétés du projet, dans Elips3 > Targeted Devices. Sélectionnez "Generic Android" et cliquez sur "Edit By Platform". Dans la fenêtre qui s'ouvre, remplissez les 4 paramètres concernant la clé que vous avez généré (son chemin, son alias, son mot de passe (deux fois)):

properties_android

Vous pouvez ensuite lancer le packaging. Si tout se passe bien, vous devriez avoir un fichier .apk. Pour l'emplacement de ce fichier, regardez ce qui est écrit dans la console, elle vous indique le chemin.

Lire la suite: 'OpenPlug: Déploiement d'une application sur un portable Android (sous Windows XP et 7)'

23
fév

La grosse déception du jour: OpenPlug

Si vous cherchez à créer une application pour plate-formes mobiles, vous êtes sûrement tombé à un moment sur OpenPlug. Dans sa présentation, OpenPlug fait une annonce plutôt accrocheuse: Développez vos applications mobiles comme vous développez vos applications Web. Vu que l'arrivée du Framework Flex Slider (pour mobiles) et de Flash Player 10.1 sur toutes les plate-formes se fait encore attendre, je me suis dit que OpenPlug serait ma solution pour mes dev mobiles.

OpenPlug est pour l'instant en version 3, beta3 (gratuite), ce n'est pas une version finale.

Sur le papier, on écrit du Flex comme dans la vie de tous les jours et on peut compiler en natif, des applications pour iPhone, Android et Windows Mobile (entre autres). Après plusieurs semaines, j'ai enfin pris le temps de tester la bête. Disposant d'un portable sous Android (HTC Magic), je pouvais donc tester sur l'émulateur et en vrai, parfait.

OpenPlug est une "Suite" logicielle comprenant un plug-in pour Flex Builder, divers compilateurs, simulateurs et autres utilitaires. L'installation se passe sans trop de problèmes et on nous demande d'utiliser le Framework "Elips", un framework crée par OpenPlug basé sur une Flex 3.2 d'après ce que j'ai vu sur leurs forums. Parfait, je compilais jusque-là avec Flex 3.2, tout devrais marcher impec.

Ma première application avec OpenPlug

Je crée une application (type Air) en compilant avec leur framework, balance un <mx:Label> comme dans leur application de démonstration. Launch, ouverture du simulateur (qui m'a rappelé le temps où j'avais tenté de faire un peu de J2ME). Une fenêtre s'ouvre avec l'image du portable simulé puis une autre contenant l'application Air et magie, elles font une sorte de fusion qui fait que notre application apparaît dans la fenêtre du téléphone.

Mon Label est bien là, parfait, je vais créer une ComboBox pour voir si elle est interprétée comme les ComboBox HTML (celles du navigateur HTML sous Android s'ouvrent avec une liste plein écran, lisible et scrollable). Alors, j'ouvre un tag, tape "mx:Com" puis Ctrl+Espace pour activer l'auto-complétion et là … rien (enfin si, mx:Component :P ). Retour en arrière, je reviens sur "mx:", Ctrl + Espace. Surprise, voici ce qui apparait:

openplug-1Bon, admettons, pas de ComboBox (et pas de DataGrid, certains l'auront remarqué au passage). Mais on a le composant de type mx:List, faisons le test avec un dataProvider contenant quelques objets String. Launch et voilà le résultat dans le simulateur:

openplug-2

Et oui, ce bout de truc au milieu, c'est ma List (les deux "boutons" ont l'air d'être mes boutons de scroll, pour le Batman en bas, je ne sais pas).  Pour ne pas m'arrêter bêtement là, je RTFM (Read The Fucking Manual) que l'on peut trouver sur la partie développeur du site d'OpenPlug. Dans la catégorie API Reference, on a l'équivalent de la Livedocs pour le framework OpenPlug. Bon déjà, c'est dans une sorte de frame, pas très pratique pour la navigation.

Je trouve un package intéressant, le package "openplug.elips.controls" contenant de composants Alert, GroupList, List, HTML, NavigationButtonBar. Je teste avec GroupList et List, même résultat, j'abandonne (j'ai testé avec le fonctionnement classique des composants Flex instanciés en MXML, peut-être faut-il faire autrement). Le <mx:Button> marche correctement, lui, c'est bon signe.

Un déploiement laborieux

Tampis, je tente mon application avec mon Button et mon Label pour voir comment ça rend sur mon Android. Pour le déploiement, ce n'est pas si simple, les explications sont souvent "allez voir ce qui se dit sur le site du SDK d'Android". Après quelques heures pour se battre avec les drivers / erreurs, j'arrive enfin à envoyer mon application (fichier .apk) sur mon mobile.

Je vais écrire un tutorial détaillé sur toutes les manipulations à faire (sous Windows XP et 7) pour ceux qui veulent tester leur application OpenPlug sous Android.

L'application apparaît bien dans mon menu d'application Android. Le lancement est plutôt long (pour une application avec un bouton et un label), environ 15-20 secondes. Au moment où je n'y crois plus, l'application apparait. J'ai bien mon label et mon bouton qui réagit au "click" (au "touch" dans mon cas). Petite victoire en quelques heures, voici un début de résultat.

Utilisation de librairies / code existant

Puisque ce n'est pas pour faire des micro-démos que je teste OpenPlug, je décide d'utiliser ma librairie cartographique que j'ai codé chez Business Geografic (une sorte d'API Google Maps pour le serveur d'application utilisé chez BG) et de la lier à mon projet. La liaison en elle-même se passe plutôt bien, on dirait que cela fonctionne. Je lance le débugger, BIM, erreur d'exécution. Apparemment, la propriété "rawChildren" sur la classe Container que j'utilisais n'est pas présente dans le Framework Flex version Elips. Tampis, je fais un simple addChild() pour voir ce qui se passe.

Ouverture du simulateur et là, grande joie, ma carte WMS apparaît avec les différentes tuiles qui la composent. Bien sûr, la navigation ne fonctionne pas puisque tout est basé sur les interactions souris et pas des interactions "touch". Tampis, je veux voir le résultat sur mon portable ! Maintenant que j'ai tout bien configuré les drivers et autres, je me dit que je ne vais pas y passer la nuit, ça va marcher direct. Je lance la compilation du packaging APK, au bout de 1.5 secondes, ça plante, la compilation n'arrive pas à trouver certaines classes de ma librairie (celles qui l'instancie en MXML avec utilisation du namespace de la librairie).
Lire la suite: 'La grosse déception du jour: OpenPlug'

21
fév

La vie d'un développeur Flex

Un petit billet pour vous faire partager un excellent article écrit par David Buhler qui est paru sur mes feeds ce matin:

Become, and maybe even stay, a Flex Developer.

Dans ce (long) article, l'auteur expose les situations et les difficultés auxquelles il a été confronté dans sa carrière de développeur, notamment de développeur Flex.

Personnellement, je me suis reconnu dans de nombreuses passages de l'article (notamment dans la partie un peu "codeur-no-life-passionné"). Il parle aussi des évolutions permanentes qu'impose le métier de développeur mais aussi de les approches "Entreprise" du développement.

Quelques conseils qu'il donne pêle mêle à titre d'exemple:

  • Learn a tool that makes life easier. Try Cairngorm 3 Validation
  • Learn a mainstream framework. Try Parsley
  • Improve the quality of your code using a Code Quality tool. Try FlexPMD
  • Learn a unit-testing framework. Try FlexUnit 4
  • Make all of the above work with an automated build-process. Try Ant
  • Learn some Java. The support for Java and Flex integration is excellent, the language and the OOP concepts are similar to Actionscript, and the tools for Enterprise development are robust. Try a Java Tutorial.

Bref, un article très complet et intéressant que je vous recommande vivement de lire :)

21
fév

Flex Tips – Adapter automatiquement la taille d'une List / DataGrid / ComboBox suivant la donnée

Voilà un petit "tip" que j'utilise très fréquemment pour créer des interfaces plus agréables à utiliser. Ce n'est pas grand chose mais c'est toujours un petit plus. Ce petit truc sert simplement à adapter la taille d'une composant de type "liste" (List / DataGrid / ComboBox) suivant le nombre de données qu'il doit afficher.

En effet, par défaut, ces composants affichent un certain nombre d'éléments de votre dataProvider:

  • 5 pour la ComboBox (le DropDown)
  • 6 pour la DataGrid
  • 7 pour la List

Prenons maintenant l'exemple dans lequel vous avez un dataProvider à 6 éléments pour votre ComboBox. Quand vous allez l'ouvrir, une scrollbar (barre de défilement) va apparaitre pour vous permettre d'accéder au 6ème élément. Pour accéder au 6eme (ou 7e, ...) élément, on doit donc effectuer un click de plus alors que ce ne serait pas vraiment nécessaire, on pourrait afficher un DropDown affichant les 6 éléments par exemple.

Pour définir le nombre d'éléments à afficher dans un composant Flex de type List, il existe une propriété nommée "rowCount". Il suffirait donc de mettre votre rowCount à 6 et le tour est joué. Mais on va être plus malin car on ne connait pas forcement le nombre d'élément à afficher à l'avance (peut-être même qu'il peut varier).

On va ici utiliser le Data Binding pour automatiser la tâche et ne pas se soucier du pourquoi et du comment. On va simplement faire un Binding (liaison dynamique) entre la propriété "rowCount" de notre composant de type "liste" et la propriété "length" de notre dataProvider (en admettant que ce soit un Collection comme une ArrayCollection).

Voici un petit exemple:

<mx:ComboBox dataProvider="{_listOperatorsDP}" rowCount="{_listOperatorsDP.length}"/>

Et magie du Binding, notre affichage sera exactement à la taille souhaitée, pas de scrollbar. Alors vous avez sûrement déjà pensé à un cas qui pose problème, c'est le cas où l'on a beaucoup d'élément. Dans ce cas, notre Binding fera que notre liste sera immense et en plus, vous n'aurez potentiellement pas de scrollbar.

La solution est donc de simuler un "rowCountMax" (qui n'existe pas) à l'aide d'une mini-expression de test (test ternaire en ligne):

<mx:ComboBox dataProvider="{_listOperatorsDP}" rowCount="{_listOperatorsDP.length > 15 ? 15 : _listOperatorsDP.length}"/>

Ici, on va s'arrêter à 15 éléments affichés au maximum. A vous d'appliquer ce "tip" dans vos applications pour les rendre plus agréables à utiliser.

Un petit exemple exposant la différence:

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

This movie requires Flash Player 9




Bientôt sur flex-tutorial.fr …

  • - Tutoriaux BlazeDS
  • - Composants Flex

tutorial flex tutorial flex

flex Adobe Air AFCS Data Filter Lib ToasterLib librairies AS3 Flex livres AS3 Flex

 

février 2010
L Ma Me J V S D
« jan   mar »
1234567
891011121314
15161718192021
22232425262728