Flex 4 – Pointez vers des RSLs en dehors de votre projet
Framework RSL’s in Flex Builder vs Flash Builder, Performance and Important Info
Vous le savez peut-être, avec Flash Builder 4, le framework est exporté en RSL par défaut. Cela signifie que le code du framework Flex ne se trouve pas dans votre application mais dans un fichier .SWZ séparé. Si vous ne connaissiez pas ce fonctionnement, voici un article sur les RSLs avec Flex Builder 3, toujours valable:
Flex RSL – Utilisation des RSL du Framework Adobe Flex
Vous l'avez compris, les RSLs ont un intérêt certain si vous avez plusieurs applications Flex.
A la compilation de projets Flex dans Flash Builder 4
Il est important de comprendre maintenant ce qui se passe quand un projet est "build" dans Flash Builder 4. La configuration par défaut fait que le compilateur va créer une copie de chaque RSL (fichier .SWZ) dans le répertoire de build. Ce qui signifie que lorsque vous faites une Release Build, vous aurez une copie de chacun des 6 .SWZ (entre 60 et 620Ko).
Voici la liste de ces SWZ (les numéros de builds pouvant varier):
- framework_4.0.0.14159.swz
- osmf_flex.4.0.0.13495.swz
- rpc_4.0.0.14159.swz
- spark_4.0.0.14159.swz
- sparkskins_4.0.0.14159.swz
- textLayout_1.0.0.595.swz
Pour une seule et même application, cela ne vous posera pas de problème mais lorsque vous avez de très nombreuses applications, cela va démultiplier le nombre de fichier inutilement. Par exemple, c'est le problème soulevé par ce développeur de Tour de Flex (des centaines d'applications). Ou imaginez même que vous avez un blog consacré à Flex, qui va contenir de plus en plus d'exemples Flex 4: l'auteur va-t-il envoyer les fichiers RSLs à chaque fois par FTP
.
Modifier le chemin par défaut vers les RSLs
Heureusement, une solution simple existe comme le précise cet article:
Framework RSL’s in Flex Builder vs Flash Builder, Performance and Important Info
Il suffit pour cela d'aller modifier la configuration par défaut de votre compilateur pour pointer vers un emplacement différent (URL unique). Il y a 2 tags XML qui précisent l'emplacement des RSLs:
- Le premier est celui vers les RSLs hébergés par les serveurs Adobe. Laissez-là telle qu'elle est
- Le second est le '"failover", celui qui va être pris en compte si les serveurs Adobe ne sont pas accessible pour N raisons. C'est ce chemin que vous devrez modifier.
Flex PHP – A ne pas oublier quand vous déplacez votre projet Flex
Tutorial Flex écrit par Serge Boujo . Publiez vous aussi sur flex-tutorial!
Deux petits problèmes concernant AMFPHP, qui me sont arrivés coup sur coup, un jour de grand ménage et de réorganisation de mes projets. Ce n’est, certes, pas d’une portée technique terrifiante, mais ça pourra, je l’espère, éviter à certains de perdre un temps précieux.
L'accès à la base de données ne fonctionne plus
Le symptôme est le suivant : votre développement Flex accédant à une base de données ne fonctionne plus.
Certain de votre code, vous décidez, en utilisant le browser AMFPHP, de tester vos méthodes. Dans le browser, voulant tester le service, vous obtenez:
Evidement, vous passez et repassez votre php en revue : tout à l’air parfait, le service comme le VO (Value Object). Et, évidement toujours, il ne viendrait pas à l’esprit d’examiner votre objet depuis le browser : pour obtenir ça, à quoi bon ?
Et c’est là que vous auriez eu tort… Parce que vous auriez obtenu ça :
Le remède : virez tous les retour-chariot qui suivent la balise fermante…
Tout rentrera dans l’ordre. Ce problème des retours-chariots surnuméraires concerne également les services, quel que soit l’éditeur externe à Flex que j’utilise.
Le canal de destination ne peut plus être atteint
Le symptôme est le suivant:
Pourtant, tout fonctionnait avant que vous ne déplaciez le projet d’un workspace / espace de travail à un autre. Vous n’avez rien touché au code. C’est à n’y rien comprendre.
Le remède : Allez vérifier les paramètres de compilation de votre projet:
J’ai systématiquement le problème en Flex 4, jamais en Flex 3 : ce qui est dans l’ovale rouge disparait.
Jeu-concours !
1 – Au bout de combien de mois cela m’est-il arrivé pour la première fois ?
2 – Combien de temps ai-je perdu, lorsque ça m’est arrivé ?
Il est interdit de se moquer…
[Offre d'emploi] – Flasheur codeur AS2/AS3 sur Paris Ouest
Flasheur codeur AS2/AS3 (Paris Ouest) (Offre d'emploi)
- Titre: Flasheur codeur AS2/AS3
- L'entreprise: SEVENTHMEDIA QUANTIM GROUP (http://www.seventhmedia.fr) Spécialisée sur les technologies tactiles, nous sommes une agence de communication de l'ouest parisien. (clients dans l'automobile, la banque le luxe) Pour faire face à notre croissance nous recrutons 1 développeur, une développeuse Flash Flex builder AS2 – AS3. Ambiance de travail sympathique et détendue au sein d'une équipe de 7/8 personnes pour la partie studio de création. Matériel au top..
Profil Recherché
- Profil recherché:
- Vous possédez une solide expérience dans le développement d’applications ou sites web en Flash /? Flex / AIR éventuellement AS3, acquise chez un acteur de web (nouveaux médias, webagency, …).
- Vous savez travailler en équipe, vous êtes organisé et aimé le travail bien fait. Sachant que Le monde de la communication est toujours sous pression, vous savez bien sûr gérer ces situations.
- Nous recherchons des passionnés désireux de s'investir sur un nouveau support. Sourire et bonne humeur obligatoire
- Compétences Techniques Requises:
- Vous êtes développeur confirmé possédez les compétences requises suivantes:
- Adobe Flash /? Flex : expertise /? très bonne maitrise
- AS 3 (ActionScript 3&2) : très bonne maitrise /? bonne maîtrise (2 ans d’expérience minimum)
- Design pattern et connaissance sinon maîtrise maîtriser tous les aspects de la conception de maquettes graphiques (gabarit sous photoshop et Illustrator).
- Expérience Requise: minimum de 2 années d'expérience
- Formation: -
- Disponibilité: asap
Conditions d'embauche
- Lieu : Paris (CHATOU 78)
- Rémunération: 37000-39000 + primes (selon compétences)
- Contrat: CDI
Pour postuler
- Contact:
- Faire parvenir un cv à Maxime SAUVAGET : msauvaget (AT) partnerstest (POINT) com ou directement par téléphone : 01 30 09 79 64
Flex 4 (6) – Composants graphiques qui n'apparaissent plus après une migration depuis Flex 3 [Résolu]
J'ai eu aujourd'hui, un commentaire sur la page de la ToasterLib, me demandant s'il y avait une version Flex 4 de cette librairie. Je me suis donc attelé à la tâche cette après-midi. Même si mon apprentissage de Flex 4 est loin d'être au point, la ToasterLib n'a que peu de dépendances vers Flex (Canvas, Label tout au plus), je pensais donc que cela allait être aisé.
Mais je commence à comprendre pourquoi Adobe conseille de ne pas faire de migrations "bêtes et méchantes" Flex 3 vers Flex 4. Il faut en effet être méticuleux dans le remplacement des composants, connaître leurs équivalences et les petites modifications de comportement.
Migration de la ToasterLib
Pour créer une version utilisable avec Flex 4 de la ToasterLib, j'ai pris mon projet Flex 3 sous Flex Builder 3, j'ai crée une branche SVN nommée "ToasterLibFx4" et j'ai fait un checkout de ce projet dans Flash Builder 4. A l'import, je précise bien que je veux utiliser le SDK Flex 4.0 me voilà opérationnel.
Je commence donc à modifier les Canvas en SkinnableContainer, à mettre les paddings/horizontalCenter/verticalCenter sur les propriétés "layout" des composants (on verra cette partie plus tard dans les tutoriaux Flex 4). Après ces quelques modifications, mon projet d'exemples compile et fonctionne presque correctement en seulement 30 minutes! "Presque" correctement car déjà un premier problème se présente…
L'effet Move d'entrée est joué mais le composant n'est pas visible avant la fin de l'effet
Le premier effet qui est appliqué aux Toast est un effet d'arrivée crée par un Move appliqué au Toast. Petite surprise, celui-ci semble ne pas se produire et on voit seulement le Toast à la fin de la durée de l'effet (500ms). Avant ce délai, le composant n'est même pas visible. Les effets suivants (Blur, Fade) et même le Move qui se produit à la disparition du Toast sont par contre joués comme ils le devraient.
Première piste, vérifier que l'effet est bien joué pendant une durée correcte:
...
var moveEffect:Effect = _effectDescriptor.getMoveToStackTopEffect(toastMessage, moveFromPoint, moveToPoint);
moveEffect.addEventListener(EffectEvent.EFFECT_START, function onEffectStart(event:EffectEvent):void{trace ("start: " + getTimer());});
moveEffect.addEventListener(EffectEvent.EFFECT_END,function onEffectStart(event:EffectEvent):void{trace ("end: " + getTimer());});
moveEffect.play()
...
start: 3103
end: 3599
Pas de problème à ce niveau là, le Move est bien lancé quand on fait play(). Il faut donc chercher une autre piste.
Deuxième piste, vérifier que l'on ne lance pas l'effet trop tôt (de-sychronisation):
...
var moveEffect:Effect = _effectDescriptor.getMoveToStackTopEffect(toastMessage, moveFromPoint, moveToPoint);
setTimeout(moveEffect.play, 1000);
...
On décale ici la lecture de l'effet d'une seconde. A l'écran, on voit alors que le Toast apparait en (0,0) puis l'effet se joue, ce qui fait que le Toast "sursaute". Seulement, s'il on réduit le délai à 100ms, le composant ne s'affiche plus, comme avant. Avec l'habitude d'utiliser Flex, on acquiert un petit doigt spécial qui nous dit que le composant a besoin d'être entièrement crée (évènement FlexEvent.CREATION_COMPLETE) pour que l'effet puisse se jouer.
Voici donc le troisième test:
// TODO
// find a way to trigger the effect onCreationComplete without using an anonymous function
// that will prevent the toastmessage from being collected
toastMessage.addEventListener(FlexEvent.CREATION_COMPLETE, function onToastMessageCreationComplete(e:Event):void{moveEffect.play()});
Ici, on s'inscrit sur l'évènement CREATION_COMPLETE du toast. Quand celui-ci se produit, on lance l'effet. J'ai choisi ici de passer par une fonction anonyme qui me permet de garder directement la variable "moveEffect" dans le "scope" de la fonction. En effet, avec une méthode de handler classique, je n'aurai plus eu accès à la variable "moveEffect".
Attention, comme précisé dans le commentaire, ce n'est pas une bonne pratique car cela signifie que même fermés, les Toasts seront mal ou pas du tout détruits par le Garbage Collector. Dans le futur, il faudra trouver une meilleure solution
Presque sans surprise, cette solution fonctionne. Je ne sais pas pourquoi mais avec Flex 3, je n'avais pas besoin de faire cette manipulation. Peut-être est-ce un bug, je ne sais pas vraiment.
En passant d'une Box à un BorderContainer, les composants enfants ne s'affichent plus
Pour être plus cohérent avec Flex 4, je décide de "migrer" la classe ToastMessageBase. La classe ToastMessageBase est comme son nom l'indique, la classe dont on va hériter pour créer un "Toast". Cette classe, avec Flex 3, héritait de Box. Puisque j'ai besoin d'un "Canvas avec border", je choisis de remplacer Box par BorderContainer qui va me donner le même fonctionnel.
Adobe Air Challenge – C'est terminé, votez pour votre application favorite
Il y a quelques jours, se tenait le premier Adobe Air Challenge à Paris. Pour éviter de me répéter, voici le principe:
Adobe Air Challenge @ Paris le 18 Juin: 24h de code pour créer la meilleure application
24h de code donc pour créer une application par équipe de 2. Le thème a été dévoilé au dernier moment: "Un Air de famille". Petit jeu de mot qui laissait les candidats libres de créer le fonctionnel qu'ils souhaitaient. Bravo donc à tous les participants pour ce défi plutôt corsé.
Les winners
- Gagnants : Equipe Digitas (Kosovo)
- Prix du design : Equipe Belge (beg sleep like a child)
- Prix technique : Equipe Dagobert
Toutes les équipes ont été interviewées pendant les évènements. Toutes les vidéos sont sur Viméo et récapitulées sur ce billet d'Hebiflux:
http://www.hebiflux.com/blog/2010/06/24/adobe-air-challenge-en-24h-avec-air-on-peut-tout-faire/
Le prix du public, à vous de décider
Tous les prix n'ont pas encore été distribués, il reste encore le prix du public. Le vote se fait au nombre de téléchargement. Avant de télécharger une application, vous devrez donc remplir un captcha un peu lourd mais nécessaire (cliquez sur l'image si vous n'arrivez pas à lire le captcha pour le recharger).
Télécharger les applications du Adobe Air Challenge
A gagner pour les premiers, un voyage à Los Angeles pour le prochain Adobe Max
Mon avis sur les applications du AIC
J'ai téléchargé les applications une par une ce matin pour les tester. Et je dois avouer que je reste un peu sur ma faim. Bien sûr, à 2 pendant 24h (moins temps de repos), on ne peut pas s'attendre à des applications finalisées. Mais sur les 12 applications que j'ai pu télécharger / tester (l'installeur de celle de l'EPITA ne fonctionne pas), plus de la moitié ne fonctionnent ou ont des bugs bloquant.











