Ceux qui sont abonnés sur la mailing list d'OSFlash l'ont surement remarqué, Nicolas Cannasse a commencé à étudier et documenter le format SWF 9 sur le wiki d'OSFlash. Il y a encore du pain sur la planche mais c'est déjà un excellent départ! Beau travail Nicolas!
Comme vous avez surement pu lire une bonne dizaine de fois hier, je ne vous apprends rien en vous disant que Flex 2 et le Flash Player 9 sont maintenant disponibles officiellement.
Lorsque j'ai vu la nouvelle hier matin, j'ai tout de suite été télécharger le Flash Player sur le site d'Adobe. J'ai ensuite téléchargé le trial de Flex Builder 2 afin de continuer mon travail et faire une fois pour toute les modifications à mon code pour qu'il compile à nouveau (à cause des modifications dans le SDK). Petite note au passage, il y a quelques bugs assez chiants dans le SDK qui sont apparus dans le release officiel et qui n'étaient pas dans la beta 3 (grrr). Par contre, la dernière version est beaucoup moins gourmande sur la RAM. Chez moi, le plafond est à 215Mo alors que dans la beta 3 il n'y en avait pas! (je songeais à m'acheter 2Go de RAM ! )
Pour en revenir au but de ce post, j'ai eu une mauvaise surprise lorsque je suis arrivé pour debuger mon code. J'avais un popup d'erreur qui disait que le Flash Player Debug n'était pas correctement installé dans Firefox. Donc il était impossible de débuger dans Firefox. Après un certain temps, on s'est rendu compte que ça fonctionnait dans IE .
Une fois de plus, c'est Fred qui a trouver et régler la racine du problème .
C'est que la version du Flash Player qui est distribué publiquement sur le site d'Adobe est 9,0,16,0 alors que la version du Flash Player Debug est 9,0,15,0. Donc on supose que l'installeur du Flash Player ne fait rien étant donné que la version installé est supérieur. Il a fallu désinstallé le plugin Firefox et réexécuter l'installateur du Flash Player Debug.
Bref, moral de l'histoire : ne pas télécharger le Flash Player directement sur le site d'Adobe si vous avez l'intention d'installer Flex Builder.
Dernièrement, je devais développer un component Flex 2 qui doit être skinnable par un CSS. Le design par défaut m'était fourni. La définition des skins se fait dans FLA créer à l'aide Flash 8.
Il y a beaucoup de coins arrondi dans le design. J'avais entendu parler vaguement de la fonctionnalité scale9grid qui permet de définir des zones de redimensionnement dans un clip mais je croyais que c'était utilisable uniquement que par le code. Le problème était que je voyais mal comment déterminer la taille exacte des coins sans rajouter des styles supplémentaire dans la CSS, donc j'avais écarter la possiblité d'utiliser un scale9grid. Je dois avouer que j'étais un peu mélanger... C'est alors que Fred est venu à ma rescousse
Il m'a appris que l'on pouvait définir les zones de redimensionnement d'un scale9grid directement à partir de l'IDE Flash. Il suffit d'ouvrir le paneau de la librairie, faire un clic-droit sur le symbole et cliquer sur properties. En bas complètement du popup des propriétés, il y a la case à cocher "Enable guides for 9-slice scaling" qui permet d'afficher les guides pour le scale9grid.
Voilà, j'espère que ça pourra être pratique pour ceux qui comme moi, n'avait pas encore découvert cette fonctionnalité
Voici un article intéressant sur Apollo, le futur Flash-Player-Acrobat-Reader-et-browser-HTML-qui-tue, développé par Adobe. Voici un petit résumé des points importants pour ceux qui ne comprennent pas bien la langue de Shakespeare.
Pour ceux qui ne connaissent pas encore Apollo, c'est un accouplement entre le Flash Player, Acrobat Reader et un browser HTML. Ce qui permettra de lire des SWF, des PDF et du HTML dans le même conteneur. Le tout est ciblé pour le desktop. Donc ce n'est pas pour le web. Toutefois, rien n'empêche d'utiliser des services web pour charger des données dynamiquement. Apollo est uniquement un Player, il ne permet pas de créer des projecteurs afin de les distribuer sur CD-ROM.
L'engin utilisé pour afficher le HTML est censé fournir un support complet des standards web. Ce qui permettra de rouler n'importe quel application HTML/javascript déjà existante. L'identité de l'engin en question n'a pas encore été dévoilé mais il ne sera pas développé par Adobe. (je soupçonne l'utilisation de gecko, qui est l'engin de rendu utilisé par Firefox)
Apollo étant ciblé pour le desktop, il fournira des API (pour Flash et le JavaScript) permettant de communiquer étroitement avec l'OS.
Il sera disponible en alpha/beta sur Adobe Labs d'ici la fin de l'année et sera disponible officiellement dans la première moitié de l'année 2007. Apollo sera gratuit tout comme le Flash Player l'est présentement. Et dernier point important, il sera multi-plateforme !
Pour ceux qui ont encore de la misère à visualiser de quoi aura l'air Apollo, voici quelques screenshots d'applications Flex 2 qui roule sur le desktop avec un fond transparent. Rien de vraiment nouveau, mais ça peut donner un idée Étant encore dans la phase primaire du développement, il n'y a pas encore de démo démontrant le mixte de SWF, PDF et HTML.
Par liguorien,
mercredi 17 mai 2006 à 10:52 ::Flash
Nicolas Cannasse vient d'annoncer la sortie de haXe 1.0. Un nouveau language qui a pour syntaxe un mixte entre l'ActionScript 2, Java et C++. Le but de haXe est d'avoir un seul language pour plusieurs plateformes. Il peut être utilisé pour faire du Flash, du JavaScript ou bien un serveur web. Pour ce qui est du serveur, le bytecode est exécuté par la NekoVM, qui est également développé par Nicolas Cannasse.
Personnellement je ne peux pas dire que j'ai vraiment essayé, je suis trop occupé pour le moment avec Java et l'AS3... Mais si j'ai l'occasion d'utiliser haXe pour un futur projet, je vous en reparlai. Dans tout les cas, ça semble très prometteur !
Appel au flasheur, il y aura bientôt un autre volet du concours Crea organisé par l'équipe de mediabox. Le concours se déroulera entièrement en ligne. Comme à l'habitude, le sujet sera donné le jour même et les participant auront 9 heures pour réaliser leur création. Il y aura 2 sujets répartis sur 2 jours. Les participant peuvent choisir de participer à une seule soiré ou bien les deux. Le gagnant remportera la suite complète d'Adobe qui comprend :
Le concours se déroulera le vendredi 5 mai 2006 à 19H et le samedi 6 mai 2006 à 19H.
À noter que 19H c'est l'heure de France. Pour ceux comme moi qui sont au Québec, c'est à 13H. (je vais avoir un avantage statégique sur la fatigue, mouhahahah )
Par liguorien,
jeudi 26 janvier 2006 à 07:15 ::Flash
Kiroukou vient d'annoncer Sandy 0.2. Pour le rappel, Sandy est moteur 3D codé en AS2, compatible avec le Flash Player 7 et 8.
Voici une citation pour rappeler les principales nouveautées de ce release :
* Intégration d'une partie de la librairie de Francis Bourre pixlib. Cela permet d'avoir avec cette version une réelle gestion des évennements. * Gestion de la camera avancée : Rotation, translations * Compilation complète avec MTASC (bientot avec le mode -strict) * Tri des faces amélioré pour moins de problèmes d'affichage. * Modifications du coeur du moteur pour plus de performance et plus de simplicité. * Ajout des faces de 4 et N points pour plus de performance ( moins de temps d'affichage nécéssaire ). * Changement radical de la signification des transformations. Maintenant il devient très aisé de disposer un object sur la scene exactement comme on le veut.
Allez faire un tour dans la section resources pour télécharger cette nouvelle version ou bien tout simplement pour avoir de la documentation sur l'utilisation de cette API.
Par liguorien,
lundi 21 novembre 2005 à 15:30 ::Flash
Petit coup de pub pour le blog flash d'un ami. Le blog existe depuis 2 mois, mais je viens tout juste de découvrir son existence.. (t'aurais pu m'le dire fred ! )
Par liguorien,
mardi 25 octobre 2005 à 21:09 ::Flash
Je me suis rendu compte d'un fait dernièrement : en Actionscript, tout est passé par valeur. Même si cela peut paraitre étrange, c'est bien le cas
Mon ancienne façon de voir la chose, c'est que les types Boolean, Number et String sont passés par valeur et tout le reste (Array, Object, etc...) est passé par référence.
Pourquoi est-ce que c'est seulement ces trois types qui sont passé valeur ? Et pourquoi le reste par référence ? Regardons tout d'abord du côté du reste qui est passé par référence.
Par liguorien,
vendredi 14 octobre 2005 à 12:27 ::Flash
J'ai commencé cette semaine à utiliser les nouvelles fonctionnalités de Flash 8. La classe flash.net.FileReference en particulier. J'ai commencé par lire ce tutoriel d'Aggelos. Le code du côté de Flash s'est fait assez rapidement sans problèmes. Enfin, c'est ce que je croyais...
Pour le côté serveur, j'ai commencé par faire un action Struts dont le rôle est d'uploader le fichier, créer une entré dans la BD, récupérer l'ID de cette entré et le retourné au SWF. C'est à ce moment que je me suis rendu compte qu'il n'avait aucun moyen de lire le contenu de la réponse de la requête HTTP utilisé pour l'upload (de la même façon qu'on le fait avec un LoadVars). J'ai dû procéder à un hack merdeu. Je stock l'ID dans une variable session et je fais un autre requête au serveur pour récupérer l'ID qui est dans la session. Ce qui entraine un autre problème...
Habituellement les requêtes HTTP faites par le FlashPlayer (LoadVars, XML, etc...) envoient les cookies du client au serveur. Ce qui permet de gérer les sessions. Mais... le FileReference d'envoi pas les cookies ! Il faut envoyer l'ID de session manuellement...
Pour récupérer l'ID de la session dans le SWF, je l'ajoute comme paramêtre dans le paramête movie de l'élément object dans le HTML.
L'upload semblait bien fonctionner, le fichier était bien copié sur le disque dur du serveur. Mais en fait ce n'était pas le bon fichier... J'avais réutilisé une classe d'upload que j'ai fait pour le même type d'application, sauf que le client était en Swing. J'envoyais les données binaires brutes directement dans le corps de la requête. Évidemment le flash player ne procède pas de cette façon. Les données sont envoyées en multipart/form-data, ce qui est l'équivalent d'un formulaire d'upload HTML. J'ai donc modifié mon action struts en conséquence. J'ai réessayé à nouveau et là j'avais toujours une Exception qui était lancé : Stream ended unexpectedly.
Comme si le Flash Player n'envoyait pas le fichier à uploader en entier. Après beaucoup de gossage. Je me suis rendu compte qu'en fait le Flash Player fait deux requêtes au serveur lorsque l'on invoque la méthode upload. La première est tout simplement une requête vide n'ayant même pas un octet ! Par contre la deuxième requête est la bonne. J'ai dû rajouter ce petit hack dans mon action Struts :
Java
if(request.getContentLength() == 0)return null;
J'ai finalement réussi à tout faire fonctionné, mais en beacoup plus long que prévu. Je me demande si cette classe à bien été testé ?
Pour ceux qui étaient trop occupé à s'amuser avec FDT, SAPIEN vient d'annoncer la sortie de PrimalScript 4. Il est maintenant offert en trois version : standard, professional et enterprise. La version enterprise ne sera pas disponible avant le mois d'Octobre.
Par liguorien,
dimanche 21 août 2005 à 18:20 ::Flash
Voici un article très intéressant sur la performance du Flash Player. Il est écrit par Tinic Uro, ingénieur principal du Flash Player. Lisez bien ce qu'il à écrit, particulièrement à la fin où il recommande de ne pas trop abuser des nouveaux effets graphiques.
Par liguorien,
mercredi 17 août 2005 à 12:57 ::Flash
Macromedia organise un séminaire à Montréal le 13 septembre pour le lancement de Studio 8. Une license complète sera tirée comme prix de présence ! Je crois que je vais y aller. ^^
FlashORB devient maintenant WebORB. En plus de supporter le Flash Remoting (AMF) et les communication via socket, il supporte maintenant le AJAX. Il est disponible en Java et .NET. WebORB est disponible en deux versions : Standard (gratuite) et Professional (commercial).
Pour avoir travailler avec FlashORB, je crois que c'est le serveur socket et remoting le plus complet présentement sur le marché.
Un nouveau blog Flash francophone est né. Il s'agit du blog de Martin Arvisais (admin de FlashADN). Les sujets traités tournent autour de la plateforme Flash.
Voici deux blog Flash français qui mérite un détour :
Le premier, encore tout frais, est celui d'eRom : http://www.customactions.net/webblog/. Pour l'instant les sujets principaux sont Flash et JavaScript.
Le second, un peu plus ancien, est celui d'erixtekila : http://www.v-i-a.net/blog/. La page d'acceuil est peut-être blanche, mais la dernière news est assez récentes et les archives en valent la peine. ^^
Par liguorien,
vendredi 10 juin 2005 à 11:50 ::Flash
Je viens d'apprendre quelque chose d'assez important en lisant un article sur PowerSDK.
Il y a plusieurs façon d'instancier les types primitif d'ActionScript. Par exemple, la façon conventionelle d'instancier un String est d'utiliser les guillements.
AS2
var str:String = "1,2,3,4,5,6";
De cette façon le String est variable "purement" primitive, elle occupera donc moin de mémoire.
Lorsque l'on doit invoquer une méthode d'un primitif, le Flash Player va instancier la classe équivalente de ce type.
Par liguorien,
vendredi 6 mai 2005 à 23:23 ::Flash
Je continue ma série d'astuces sur les performances en ActionScript. Ce soir il s'agit de la vitesse d'accès aux données membres numériques. Lorsque l'on utilise une variable, le FlashPlayer regarde en premier lieu si c'est une variable locale... Si ce n'est pas le cas, il va continuer sa recherche en remontant jusqu'au _global. Donc je me suis dit qu'il y avait peut-être un moyen de booster les performances en créant un accès local temporaire aux données membres. Ce qui à l'air de fonctionner lorsque l'on manipule plusieurs donnée membres à l'intérieur de la méthode. Plus on utilise de données membres, plus le gain de vitesse est significatif...
Par liguorien,
jeudi 28 avril 2005 à 13:23 ::Flash
J'avais déjà lu quelque part sur le net que la longeur de nom de variable en ActionScript avait un impact direct sur la performance de l'exécution du code. J'ai donc essayé de me défaire de mon habitude de nommé mes variable de façon explique, peut importe la longueur.
J'ai réussi à le faire sans trop de difficulté car c'était moins long à coder par la suite mais beaucoup plus difficile à relire.
Je commencais à m'ennuyer de mon ancienne habitude, c'est pourquoi j'ai fait un petit test maison pour connaitre la vérité :
Par liguorien,
jeudi 28 avril 2005 à 07:14 ::Flash
Nicolas Coevoet de informatif.org à récemment installer un wiki à la base de son site. Les sujets principaux sont Flash - XHTML/CSS - PHP. Il y des tutoriaux, code sources et liens utiles. De quoi pour plaire à tout le monde !
Par liguorien,
mardi 19 avril 2005 à 13:52 ::Flash
Le FLA sur lequel je travail présentement contient des centaines de symboles qui sont exporté pour l'ActionScript sur le premier frame. Afin de faire un preload potable, je ne dois pas les exporter sur le premier frame. L'idée de modifier tout les symboles un par un ne me plaisait pas trop... C'est alors que le JSFL est venu à ma rescousse !
Par liguorien,
lundi 18 avril 2005 à 21:19 ::Flash
Flash me surprendra toujours ! Moi qui croyait que la méthode push() de la classe Array était plus performante que d'utiliser un index. Et bien mes tests prouvent le contraire !
Par liguorien,
mercredi 13 avril 2005 à 13:37 ::Flash
Je n'en ai pas encore parlé sur ce blog. Hier soir j'ai reçu le dernier exemplaire du MX Developer's Journal dans lequel se trouvait un article sur le prochain Flash Player (Maelstrom). Certain sujets m'étaient déjà connu tandis que d'autres sont carrément nouveaux pour moi. C'est pourquoi je vous fait un petit résumé des points important de l'article.
Les efforts de l'équipe de développement sont concentrées sur trois thèmes : performance, expressivité et standardisation.
Par liguorien,
jeudi 13 janvier 2005 à 19:40 ::Flash
Pour la nouvelle version de FLASH STUDIO PRO, Multidmedia à décidé de renommer son produit Zinc v2. Cette nouvelle version apporte un lot assez important de nouvelles fonctionnalités. Cependant, il ne semble pas avoir de support pour l'AS2(?).
Si quelqu'un a la chance de l'essayer, n'hésitez à écrire vos impressions dans les commentaires.
Par liguorien,
mercredi 15 décembre 2004 à 22:34 ::Flash
Je ne peux rien vous cacher, je suis un grand utilisateur des composants MX2004 de Macromedia (principalement au boulot). Jusqu'à présent, ils m'ont fait économiser beaucoup de temps de développement.
Pour ce qui est des performances, ils font bien leur boulot. Je n'ai pas encore reçu de plaintes concernant les performances d'une application ou du temps de chargement initial. Les seuls plaignard que j'ai vu étaient des développeurs...
Je n'ai pas encore eu la chance de tous les utiliser dans un contexte réel. Le dernier que j'ai utilisé - et qu'au départ je croyais inutile - est le composant Loader.
Je devais charger une image centrée dans un cadre. Si cette dernière était plus grande que le cadre, il fallait la redimensionner tout en gardant ses proportions.
Ça tombe bien, le composant Loader me permet de faire tout ça en 2 ligne de code ! C'est donc ce que j'ai fait et tout fonctionnait bien. Jusqu'à temps que je me décide de tester dans IE... C'est là que mon calvaire à commencer.
Par liguorien,
mercredi 27 octobre 2004 à 16:15 ::Flash
Avis aux utilisateurs des composants MX2004 de Macromedia. La classe PopUpManager contient un bug dans la méthode statique createPopUp... Il faut s'assurer que le premier paramètre (le clip sur lequel on crée la fenêtre) ne soit pas undefined. Si c'est le cas, vous allez faire la rencontre d'une séduisante boucle infinie...
Voici le code en question qui crée le bug :
AS2
/** *mx.managers.PopupManager.as ligne 97 * *parent est le premier paramètre */ var localRoot = parent._root; if(localRoot == undefined) localRoot = _root; while(parent != localRoot){ parent = parent._parent; }
Bon, le problème peut être réglé facilement en s'assurant que l'on envoie la bonne valeur. Mais je trouvais important de le mentionner ici juste au cas où !
Par liguorien,
mercredi 8 septembre 2004 à 22:40 ::Flash
Jusqu'à maintenant, les exemples d'Advice que j'ai montré exécutaient le JoinPoint à la fin de la méthode. Mais comme j'ai mentionné dans ce billet, il est possible de choisir le moment où l'Advice sera exécuté par rapport au JoinPoint.
Par liguorien,
mercredi 8 septembre 2004 à 13:06 ::Flash
Aujourd'hui je devais afficher un nombre fixe de décimales dans le NumericStepper. Je n'ai pas trouvé de solution existante sur le web. Alors j'en ai fait une maison . Mais je n'avais pas le goût d'aller modifier le code source du composant et encore moins refaire le SWC. Donc j'ai opter pour une méthode statique qui vien remplacer la propriété value de l'instance du NumericStepper. Je sais que ce n'est pas très propre, mais c'est le seul moyen rapide que j'ai trouvé...
Par liguorien,
mardi 7 septembre 2004 à 23:59 ::Flash
Je continu mon apprentissage de l'AOP. Je dois avouer que sans documentation, ce n'est pas évident... Mais en relisant les articles de Simon et en étudiant son code, j'arrive quand même à avancer !
Par liguorien,
lundi 6 septembre 2004 à 21:00 ::Flash
Avec l'ajout du package aop dans la dernière version d'as2lib, je n'ai pu résister à la tentation d'en apprendre plus sur la programmation orienté aspect... C'est alors ce que j'ai fait une partie du weekend! Donc je vous fais un petit résumé de ce que j'ai compris. Certaines parties de ce billet sont une traduction des articles de Simon Wacker.
Par liguorien,
vendredi 3 septembre 2004 à 23:36 ::Flash
L'équipe d'as2lib vient d'annoncer le beta de la version 0.1 . Pour ceux qui ne le connaisse pas, ce projet consiste à nous rendre la vie facile en fournissant un API standard pour développer des application en AS2. La version 0.1 beta contient maintenant 209 classes!
Cette nouvelle version viens corriger beaucoup de bugs. La structure des packages a subit beaucoup de modifications. Je pense notamment au package org.as2lib.data.iterator qui a été supprimé. Dans le package org.as2lib.data.holder, un package a été créé pour chaque type de holder : array, list, map, queue, stack.
Après quelque jours d'utilisation, voici mes premières impressions de Flex.
Premièrement je dois dire qu'il est très facile à installer. Il suffit d'insérer le cd et exécuter l'installateur traditionel. Durant l'installation, on a le choix entre utiliser JRun ou un autre serveur J2EE. J'ai choisi d'utiliser tomcat que j'avais déjà d'installé et qui est compatible avec Flex (WebSphere, WebLogic, JRun, Tomcat).
Une fois l'installation terminé, il faut aller dans le répertoire ../macromedia/flex où l'on trouve 3 WAR : flex.war, samples.war et profiler.war. Il suffit de copier ces 3 archives dans le répertoire webapps de tomcat, démarrer Tomcat... Et voilà, Flex est fonctionnel!!!
Voici un petit récapitulatif de la soiré pour ceux qui étaient absent. Premièrement, la plupart des gens qui étaient censé venir ne sont pas venu... Mais nous étions quand même 25 personnes donc c'était pas si mal. Finalement la rencontre entière s'est déroulé en anglais...
Je viens de perdre environ 1 heure sur un bug... grrr!!! Alors je vous en fait part afin que vous ne perdiez pas trop de temps lorsque vous y serez confronté. Je n'ai pas encore identifié la cause exacte du bug, mais je sais que c'est à cause d'un mixe entre le MovieClip.getNextHighestDepth() et le FocusManager des components v2 de MM.
Cette après-midi, kiroukou m'a fait découvrir une librairie que je ne connaissais pas. Il s'agit d'une librairie en AS2 pour les animations fait par code. Plusieurs formes de bases sont déjà à notre disposition. Presque tous les interpolations possibles sur chaque propriété d'une forme on été encapsulé dans une classe afin de pouvoir paramétrer le tout ^^
Par liguorien,
vendredi 13 août 2004 à 09:57 ::Flash
Le mercredi 18 Août se tiendra la 8ième rencontre de FlashADN. Cette rencontre organisé par LordAlex sera au même endroit qu'a eu lieu le cyber-meeting de MM le 19 Mai dernier. Je serai présent comme à l'habitude... au plaisir de vous y voir!
Ce n'est pas une nouveauté, cette classe est disponible depuis la sortie de MX 2004. Mais je n'ai découvert son existance que récemment... Il s'agit d'une classe garnit de méthodes statiques très utiles pour la gestion des niveaux des MovieClip.
AS2
public staticfunction sendToBack( target:MovieClip):Void;
public staticfunction bringToFront( target:MovieClip):Void;
public staticfunction sendBackward( target:MovieClip):Void;
public staticfunction bringForward( target:MovieClip):Void;
Je trouve MM déplorable de ne pas mentionner l'existance de cette classe dans la documentation officiel...