index
-
Publié le 10 Feb 2011par Julien Beaufils
EaselJs
EaselJs est une librairie créée par grant skinner.
Sa principale fonction est de simplifier la gestion de la liste d'affichage, les interactions et les animations simples dans un canvas HTML.
Cette lib déclare des objets bien définis qui seront familliés à certains comme le montre la doc Elle reste cependant relativement fine.
Le petit outil associé zoë permet (en gros) de convertir des anim flash en objets BitmapSequence d'easelJs.EaselHx
EaselHx est un dépot git des classes "externs" Haxe permettant d'utiliser EaselJs avec ce language. Ce dépot ne supporte cependant que EaselJs 2.1 alors que la v 3.0 vient de sortir. Cependant le "forker" et ajouter les quelques fonctionnalités manquantes ne doit pas prendre longtemps.
Le fait d'utiliser ce dépot avec EaselJs apporte les avantages supplémentaires suivants :- environnement résolument orienté objet relativement propre et évolutif.
- typage stricte avec les vérifications d'incohérences asso...
0 commentaire(s) -
Publié le 26 Jan 2011par Julien Beaufils
CS SDK, Q'uest-ce que c'est :
En 2010, Adobe a sorti une version reforgée du CS SDK .
Comme son nom l'indique c'est le kit de développent logiciel de la "creative suite 5".
Il offre un accès profond aux API de la plupart des logiciels CS5 via le language Actionscript 3 en utilisant également le runtime AIR.
On peut ainsi imaginer et développer toute sorte de plugin de la boite de dialogue au tooltip en passant par les panneaux.Malheureusement :
- le guide du CS SDK explique le fonctionnement avec FlashBuilder4 pour un projet de type MXML uniquement.
- le SDK doit utiliser une version modifiée du SDK Flex antérieure à spark :
Si je pense pouvoir réellement apprécier les composant spark, je sais que ne supporte pas ceux de l'espace de nom mx. En générale l'AS3 me semble suffisant.
J'ai donc voulu voir si l'on pouvait faire fonctionner ce SDK avec Flashdevelop et ai noté la démarche sur windows 7.
Configuration préalable :
La doc indique qu'il faut faire quelques con... (suite...) -
Publié le 16 Jan 2011par Julien Beaufils
Contexte
Hormis l'ajout API'S, le langage AS3 n'a pas beaucoup évolué depuis FP9.
je crois que j'ai eu assez le loisir de le triturer dans tout les sens, de faire et refaire un certain nombre d'erreurs.J'ai notamment eu l'occasion :
- d'user des design patterns (en particulier les pricipaux GOF) jusqu'au non sens.
- de programmer à la mode événementielle et sur-dynamiquement jusqu'à l'indébuggabilité voir l'étouffement du programme
- de me retrouver avec des memory leaks de trois mètre de long
- de réécrire des centaines de fois (des milliers ?), la même chose façon anti-DRY
- de faire de progs nécessitant des configs absolument phénoménales pour afficher 3 images
(CoC) - de coder complètement au feeling ne sachant pas ce que j'allais réaliser : la prog. en écriture automatique.
Ce genre d'erreur influence la manière que l'on a de programmer.
(suite...)
Parfois je tente de fixer le style courrant avec un petit framework utile pour un certain type de projet.
De temps en temps, en fonction du ve... -
Publié le 15 Jan 2011par Julien Beaufils
En 2010 il y a eu quelques bonnes nouvelles pour la plateforme Flash :
- la modification de la licence d'Apple qui permet l'utilisation du packager for IPhone
- de nouveaux API AIR dans avec la possibilité de lancer des processus natifs, de créer des ServerSocket's, et de récuperer des informations sur le réseau
- Flash Player 10.1 notamment les API P2P et le Multitouch
J'ai souhaité faire une petite app pour mon IPod permettant de contrôler les ordinateurs connectés à mon réseaux local
Je voulais :
- qu'il y ai le moins de configuration possible
- ne pas être tributaire d'un service extérieur
- ne pas être tributaire de ma connexion à internet
- éviter si possible les dangers associés à la transmission
Du coup j'ai utilisé chacune des possibilités pré-citées pour écrire un programme dont voici les sources
Il y 2 dossier :
(suite...)- Un dossier C# qui ne contient qu'un fichier "Main.cs" qui doit être compilé en un EXE nommé "mouseControl.exe". Pour cela j'ai ...
-
Publié le 19 Dec 2010par Julien Beaufils
Par exemple avec la version minifiée de jQuery
/* * Dans cet exemple le fichier jquery.js est enregistré * au même endroit que la source */ [Embed(source='jquery.js',mimeType="application/octet-stream")] var jqClass:Class; try { ExternalInterface.call ( "function(){" +(new jqClass() as ByteArray).toString() + ";}" ); } catch(e){trace("as3/js error : "+e.toString())}
Exactement de la même manière, pour l'execution de n'importe quelle expression JS sous forme de chaine à la volée, on peut utiliser cette fonction :
private function runJS(expr:String):void { try { ExternalInterface.call("function(){" + expr + "}") } catch(e){trace("as3/js error : "+e.toString())} }
tip : Le JS peut être écrit "inline" dans le code en l'enveloppant dans un XML avec des CDATA.
De cette manière il peut être mis en forme correctement et la colorisation syntaxique s'exprime (sous flashDevelop)Avantages :
- emporter une lib JS sur tous les sites ou le SWF est...
-
Publié le 19 Dec 2010par Julien Beaufils
Présentation
L'autre Jour je suis tombé sur un projet sympa :
- redtamarin est un projet basé sur tamarin, le coeur de Flash Player.
- Il permet d'écrire en as3 des outils en ligne de commande cross-plateform.
- L'api (v0.25) est pour l'instant sommaire, mais il promet d'être agrémenté de toutes les fonctionnalités essentielles dans peu de temps avec la version 0.3
Configuration avec Flashdevelop
Le Wiki n'indique pas comment utiliser Redtamarin avec cet IDE alors j'ai fait une extension ajoutant un projet type correctement configuré.
- En mode release, (combobox dans la barre d'outils de Flashdevelop) le projet type publie un exe (Windows uniquement) au nom du projet et lance le test en ligne de commande.
- En mode debug l'exe n'est pas publié et le lancement du test est donc plus rapide.
Donc pour être près à coder un outils perso télécharger et installer ce fichier redtamarin0.25.fdz pour Flashdevelop
Projet exemple
Créer un nouveau projet :
Si l'installation s'est correctement pa...
(suite...) -
Publié le 11 Nov 2010par Julien Beaufils
Juste un petit billet pour remettre en avant l'évolution du format de fichier FLA sur flash cs5 et les possibilités associées.
Un nouveau format
Désormais, lorsqu'on enregistre un fichier dans l'IDE flash, même si l'extension reste .fla, on crée une archive ZIP contenant :
- un fichier XFL
- des fichiers XML qui décrivent le doc et la librairie,
- fichiers media (jpg, png...).
De plus le FLA est enregistrable comme document non compressé. Le projet passe donc de l'état de fichier à celui de dossier.
Versioning et mise à jours de ressources
Cela me semble très positif, même si ce n'est ni parfait, ni trop tôt.
- On peut versioner efficacement les projets (SVN, GIT)
- On ne réécrit plus un gros fichier tout neuf à chaque changement,
- Le travail à plusieurs peut être optimisé et sécurisé.
- La mise à jour des médias utilisés par le projet est simplifiée:
Un graphiste peu aller remplacer une image ou l'éditer directement avec l'outil de son choix sans ouvrir l'IDE Flash.(Au lie...
-
Publié le 08 Nov 2010par Julien Beaufils
J'ai vraiment peur de l'AS3 parfois. J'ai peur que tout explose d'un coup.
Avant de commencer deux liens en rapport direct avec le sujet :C'est partie...
2 tubes à essais + un témoin; un Bec Bunsen !
Prenons par exemple la classe de document test suivante :
package { import flash.display.Sprite; import flash.events.Event; public class MemoryLeaksTest extends Sprite { public function MemoryLeaksTest() { new Sprite().addEventListener ( Event.EXIT_FRAME, new SetTimeoutTest().enterFrame, false, 0, true //on utilise les weak référence ); new Sprite().addEventListener ( Event.EXIT_FRAME, new AnonymousFuncTest().enterFrame, false, 0, true //on utilise les weak r...
(suite...) -
Publié le 04 Nov 2010par Julien Beaufils
3 Evénements utiles pour la gestion de l'affichage :
Il permettent :
(suite...)- d'associer des comportements aux objets graphiques lorsqu'ils sont ajoutés à la liste d'affichage
stage.addEventListener ( Event.ADDED_TO_STAGE, onAddedToStage, true, // Utiliser la phase de capture sinon... surprise true );
- de gérer les relations entre éléments graphiques regroupés dans un DisplayObjectContainer juste avant son rendu :
displayContainer.addEventListener ( Event.FRAME_CONSTRUCTED, onFrameConstructed, false, 0, true );
- de nettoyer correctement ces comportements lorsque les objets graphiques sont retirés
stage.addEventListener ( Event.REMOVED_FROM_STAGE, onRemovedFromStage, true, // Utiliser la phase de capture sinon... surprise 0, true );
Un assemblage réfléchi donne une classe utilitaire pour injecter / associer du code aux objets graphiques au bon moment de leur vie.
Des interfaces permettent d'injecter proprement la dépendance log... - d'associer des comportements aux objets graphiques lorsqu'ils sont ajoutés à la liste d'affichage
-
Publié le 17 Oct 2010par Julien Beaufils
L' objet présent sur la scène doit avoir un identifiant de liaison dans la bibliothèque pour assurer le bon fonctionnement de ce snippet :
new ( getDefinitionByName ( getQualifiedClassName ( getChildByName("nomDeLInstance") ) ) as Class ) as DisplayObject;
Utile lorsqu'une classe gère l'affichage de données variées à différents endroits d'un module
Par exemple :
- une liste de contacts et une liste de pays européens peuvent tous deux être représentées par une liste verticale
- le contexte graphique et le "modèle de ligne" sont cependant différents dans chaque cas
- on utilise alors ce snippet au sein de la classe qui gère la liste d'affichage pour dupliquer le modèle de ligne