jeudi, avril 10 2008

Flash Player Security Update

Pour info, la nouvelle version du Flash Player, orientée sécurité, est maintenant disponible. Estampillée Flash Player 9.0.124, elle fixe pas moins de 7 failles, dont celle qui avait permis à un pirate de prendre possession d'un système OSX.

Dnas la même lignée, Adobe AIR 1.0.1, qui intégre ces même corrections, est également disponible.

lundi, mars 31 2008

JSFL mon amour...

L'équipe d'envrac avait prévenu, mais je suis en train de doucement glisser vers la dépendance au JSFL...

Un p'tit langage qui permet de scripter l'IDE et ainsi de raccourcir drastiquement les taches répétitives, c'est quand-même du pain béni pour peu qu'on prenne le temps de s'y pencher. Pas encore interessé aux panneaux "custom", j'ai pondu quelques petites déclinaisons d'un script inspiré par une ancienne collègue - si tu te reconnais, un paquet de Carambars ;) - et qui facilite grandement l'intégration timeline/code (un petit article prévu la dessus dés que je lève un peu la tête des mes projets et que je me défénéantise en ce qui concerne ce blog).

Bref, ceci est un ensemble de 4 scripts JSFL qui font le tour des instances nommées dans un clip, et affiche dans le panneau de sortie les déclarations AS3 de celles-ci : je ne parlerais pas ici de la quasi obligation morale qui nous incombe à tous de décocher la case "Déclarer automatiquement les instances etc..." si vous êtes pas des trouillards... :p

Lire la suite...

mardi, mars 18 2008

Les composants, c'est pour les graphistes!

... qu'y disent! Eh ben, non madame, c'est bien pour les codeurs aussi!

Prenons totalement au hasard un exemple de petite classe utilitaire de debug pour afficher le framerate et la mémoire utilisée: et bien c'est quand-même bien plus pratique de déposer un petit composant sur sa scène plutôt que de se frapper un 'new FramerateViewer()' dans une DocumentClass quand-même... Et ca se fait tout aussi vite!
Et que même si on veut mettre une icone et tout et tout, ca prend bien 2mn de plus! :P

Allez, l'exemple en pratique: Framerate.swc ;)

PS: Merci famfamfam pour l'icone

lundi, mars 17 2008

Des fois, on s'demande....

1046: Type was not found or was not a compile-time constant: MovieClip.

No comment...

lundi, février 25 2008

Flex 3, AIR 1.0, etc...

Ca y est! Les blougs du monde entier l'ont déjà dit, le Flex 3 SDK, première release OpenSource de Flex et Adobe AIR, la saint graal gratuit des développeurs de RDA (Rich Desktop Applications, bande d'inclutes), sont sortis!

Tout ca semble extremement prometteur.
Je ne vais pas faire la liste des features, mais juste mettre le doigt sur un enorme point positif de cette release: la disponibilité des sources de la classe WebService de Flex! Le passage a l'AS3 avait tout simplement zappé cette classe dans Flash CS3.

Maintenant, reste à voir s'il est possible de se servir de celle-ci sans se trimbaler la moitié du framework Flex...
Si je trouve le temps de faire des tests, j'en donnerai le resultat ici... ;)

jeudi, février 21 2008

Pathfinding A-star sur bitmap

L'algorithme A* (A-star) connait de nombreuses implémentations. La plupart utilisent une grille (tableau à deux dimensions) en tant que carte. Etant à la base des jeux "tile-based", celles-ci suffisent la plupart du temps à la grande majorité des jeux. Seulement cela impose un certain nombre de contraintes, notamment en terme de dimensions des "obstacles", mais aussi en terme de performances: l'algorythme se basant sur des noeux (nodes), une grille de 40/40 offre 1600 cases (maximum, l'A* n'étant pas exhaustif), ce qui est déjà bien important...

J'ai voulu essayer de me baser plutôt sur un bitmap, simple (pour l'instant), une couleur étant celle du sol, l'autre celle des obstacles :

Lire la suite...

mercredi, février 20 2008

Options d'une méthode "Array-like"

Un appel à une méthode paut parfois avoir besoin d'un certains nombre "d'options", comme c'est le cas pour la méthode Array.sort par exemple.

Il existe alors plusieurs possibilités, la plus simple étant de proposer un certain nombre de paramètres booléens facultatifs, avec des valeurs par défaut. Le problème est tout d'abord que cela alourdit considérablement le code, mais aussi que rajouter une option supplémentaire modifie la signature de la méthode: si on travaille avec des interfaces, bonjour la galère).

Bref, il existe aussi la possibilité de passer un seul entier, qui sera la somme de puissances de 2. En gros, cela permet d'avoir, en binaire, une suite de 0 et de 1, chacun correspondant à l'activation (ou pas) d'une option.
Voyons comment cela fonctionne concrètement avec l'exemple de Array.sort

Lire la suite...

Freelance

A compter du 3 Mars, je démarre une activité de développeur indépendant, spécialisé dans l'Actionscript 3 pour Flash, et pourquoi pas Flex 2/3 (que j'ai pratiqué intensemment dans mon précédent poste sur la Côte) et Adobe AIR.
Une nouvelle page (simplissime certes, mais tirée au cordeau en XHTML/CSS) orne donc maintenant le site LAlex.com pour rendre compte de cette nouvelle direction dans ma vie! ;)

Si vous avez donc besoin d'un prestataire sérieux, n'hésitez pas à me contacter pour connaitre mes disponibilités! :)

Voilà, c'était le billet "nombril" du jour :P

lundi, février 11 2008

Actionscript 3 pour GeSHi

Eh oui, un gentil belge a fait le fichier de colorisation Actionscript 3 pour GeSHi, disponible sur son blog.

Merci à lui! :)

lundi, janvier 7 2008

TextField, htmlText et retours à la ligne

Le nouvelle gestion des TextField avec AS3 est assez géniale je dirais: plus de propriété html, et une gestion commune entre le texte "classique" associé aux TextFormat et le texte HTML. Du coup, on peut manipuler indifféremment le HTML ou les TextFormat, la modification de l'un sera reportée sur l'autre, comme on peut le voir via le code suivant:

// Crée le champ texte
var tField:TextField = new TextField;
tField.text = "LAlex";

// Crée le format (couleur rouge)
var tFormat:TextFormat = new TextFormat();
tFormat.color = 0xFF0000;

// Applique sur les deux premiers caractères
tField.setTextFormat(tFormat, 0, 2);

// Affiche le resultat HTML de tout ca
trace(tField.htmlText);
<P ALIGN="LEFT"><FONT FACE="Times Roman" SIZE="12" COLOR="#FF0000" LETTERSPACING="0" KERNING="0">LA<FONT COLOR="#000000">lex</FONT></FONT></P>

Bon, aprés on va pas chipoter sur la cohérence du formatage HTML, évidemment il y a mieux, mais le tout est d'avoir notre correspondance TextFormat/HTML...

Bref, tout ceci étant fait, si on veut obtenir le copie conforme d'un texte dans un autre, il suffit alors de copier le htmlText du premier sur le second, sans se préoccuper des TextFormat? Eh bien pas forcément...

Lire la suite...

lundi, décembre 17 2007

Interfaces et classes internal

L'AS3 nous a amené les classes internes (mot-clé internal) qui nous permettent d'encapsuler un certain nombre de fonctionnalités dans une classe disponible uniquement à la classe publique qui l'utilise. Bien pratique, cela évite les classes trop longues, et grâce à l'héritage (une classe interne peut en étendre une autre), cela peut aussi éviter l'utilisation d'un trop grand nombre de if, et donc abaisser la complexité du code.

Cela peut aussi permettre de disposer d'une classe qui n'est pas instanciable depuis l'extérieur. Seulement, il peut parfois être utile d'accéder à une instance de ces classes, et là, la solution c'est tout simplement les interfaces...

Lire la suite...

lundi, décembre 3 2007

Tweens: frame-based vs. time-based

Actuellement en train de travailler sur un séquenceur de différents types d'action, incluant notamment les interpolations, j'en viens à re-développer une classe de Tween, incluant les améliorations standards des TweenEngine en circulation sur la toile (tween de plusieurs propriétés par exemple).

Tout d'abord, il faut savoir qu'un tween a un principe tout simple: je veux qu'une propriété numérique d'un objet (le plus souvent un objet visuel, comme un Sprite par exemple) évolue entre une valeur de départ et une valeur d'arrivée sur une durée précise. Une équation est utilisée afin de déterminer l'évolution de cette valeur, la plus simple étant une équation linéaire (on partage la distance en intervalles réguliers).

Pour cela, il existe trois méthodes:

Lire la suite...

mardi, octobre 30 2007

Tweens Flash CS3

Je me rend compte carrément tard par rapport au temps depuis lequel j'utilise les Tweens, mais aviez-vous remarqué que la classe fournie par Adobe dans Flash CS3 (fl.transitions.Tween) émettait l'évènement de fin (TweenEvent.MOTION_FINISH) une frame trop tard? La raison est simple, le test effectué pour détecter la fin est strict:

if (t > this.duration) {

Il suffirait d'un '>=' à la place pour modifier cela, mais à ce moment là la fonctionnalité de boucle zapperais une frame avant de boucler...

Les Tweens de Flex et des "tween engines" que j'ai vu en AS3 (TweenLite et Tweener) n'ont pas ce défaut par contre...

vendredi, octobre 26 2007

Composants Flash CS3 : le meilleur set sera gratuit?

Trouver un set de composants de base pour Flash CS3, à part celui développé par Grant Skinner dont tout le monde se plaint, c'est pas facile. Trouver un set de composants faciles à personnaliser, c'est encore moins facile.

Alors quand un "frenchy" s'apprête à proposer les Liquid Components, un set de composants de base qui répond à tous les besoins des graphistes (et des autres utilisateurs de Flash CS3) en terme de personnalisation, et qu'en plus on sait qu'il les mettra à disposition gratuitement, obligé d'en parler!

Lire la suite...

lundi, septembre 10 2007

Nouveau job! Nouveau collègue?

Le niçois que j'étais viens de se perdre à Paris pour s'y installer, et autant dire que le choc thermique a été important! :P J'ai pris depuis mes fonctions en tant que Lead Dev Flash au sein du groupe DDB, et là j'ai bien vu que le jeu en valait la chandelle... Je ne regrette pas d'avoir fait autant de kilomètres tant le boulot est sympa. En plus je retrouve un p'tit niçois qui n'est autre que Foxy et qui a vendu son âme aux créatifs de Rapp Collins Paris...

Pour finir, on me cherche encore des collègues: j'en profite du coup pour relayer ici l'offre d'emploi de DDB:

Rapp Collins Paris du groupe DDB recherche pour son pôle "WebProd" un développeur Flash AS2/AS3.

En collaboration avec les chefs de projet techniques, vous aurez en charge le développement des projets élaborés par notre team de créatifs. Les projets sont funs et ambitieux techniquement. Ils sont encore beaucoup développés en AS2, mais on pousse fort vers l'AS3, comme par exemple sur pixelf

Ce qu'on vous demande: - être à l'aise en conception et programmation orientée objet - maîtriser plutôt très bien l'AS2 - avoir au moins eu la curiosité de s'être penché sur l'AS3 et avoir envie de continuer - et puis... être globalement doué quoi!

Le poste est un CDI basé sur Paris 9

N'hésitez pas à envoyer vos candidatures (CV+LM) à alexandre.legout -arobase- rappcollinsparis.fr

vendredi, juillet 27 2007

Des coquilles dans l'AS3

Aprés maintenant quelques un grand nombre de lignes de code en AS3, j'ai noté quelques comportements bizarres...

  • la propriété "constructor" de la classe Object ne semble pas être déclarée comme publique. Donc, on se retrouve avec une contradiction entre la doc et la réalité... et surtout aucun moyen de connaitre la classe qui a servie à créer l'objet. Un workaround existe utilisant describeType:
public class ClassUtils
{
        public static function getConstructor(o : *) : Class {
                var clname:String = describeType(o).@name.toXMLString();
                var claz:Class = getDefinitionByName(clname) as Class;
                return claz;
        }
}
  • imaginons que je crée une interface vide (ainsi que son implémentation) qui me sert uniquement à indiquer l'appartenance à deux types simultanément: en gros, une interface qui hérite de deux interfaces. Si ces deux interfaces mères ont une méthode commune et que j'utilise mon interface fille pour typer une variable, le compilateur va me remonter une erreur comme quoi la référence à cette méthode est ambigue. Ceci est tout à fait inconcevable, car il est clair que l'implémentation utilisée sera évidemment unique! Bon, étant donné que ce charabia doit être super flou, voici un exemple:
// Voir plus bas pour les différentes interfaces
package {
        import flash.display.Sprite;
       
        import itf.IDataSet;
        import itf.IList;
        import cl.DataSet;
       
        public class ASPlayground extends Sprite
        {
                public function ASPlayground()
                {
                        var ids:IDataSet = new DataSet;
                        trace(ids.getLength()); // Erreur du compilateur: Référence ambiguë à getLength.
                        trace((ids as IList).getLength()); // Marche bien !
                }
               
        }
}

package itf
{
        public interface IList
        {
                function getLength() : int;
        }
}

package itf
{
        public interface ICollection
        {
                function getLength() : int;
        }
}

// Cette interface sert au typage
package itf
{
        public interface IDataSet extends IList, ICollection
        {

        }
}

// Implémentation de IDataSet
package cl
{
        import itf.IDataSet;

        public class DataSet implements IDataSet
        {
                public function getLength():int
                {
                        return -1;
                }
               
        }
}

Rien de bien gênant, mais ca peut parfois être troublant! ;)

  • Le workaround du premier problême fait surtout chuter les performances
  • Le deuxième problême par contre ne sacrifie en rien les performances, mais peut-être gênant si on ne connait pas les interfaces mères...

mardi, juillet 10 2007

Papervision3D en beta publique

Enfin la voila! De la 3D qui claque en AS3, et même en AS2 pour ceux qui veulent tester avant la version finale: http://blog.papervision3d.org/2007/07/07/papervision3d-public-beta/

Et pour le plaisir des yeux, une petite video a été montée pour l'occasion: http://www.papervision3d.org/showreel/publicbeta

jeudi, avril 26 2007

Flex 2 devient OpenSource

Alors que les sources du framework Flex 2 sont disponibles depuis le départ avec le SDK, Adobe s'apprête à ouvrir le code de tout le SDK, notamment le code Java des compilos MXMLC et ASC. Décidemment, Adobe va vraiment dans le bon sens! 8)

Respects donc... Plus d'infos ici: http://labs.adobe.com/wiki/index.ph...

mardi, avril 24 2007

Flex 2 comprend Flash CS3

Je disais dernièrement à l'ami Foxy que j'étais tellement emballé par Flex 2 que je l'utiliserais bien même pour le développement sur des animations interactives. Le fait est que dans la pratique, cela ne semblait que difficilement réalisable: Flex 2 ne permet pas comme MTASC d'injecter du code dans un SWF déjà fait. Tout au plus, cela permet de récupérer les assets graphiques de la bibliothèque grace au [Embed], mais en perdant tout le code.

A première vue, il y a peu d'interêt à récupérer du code si l'on est un codeur qui récupère le travail d'un graphiste, mais en y regardant de plus prés, un simple stop() a la fin d'une anim reste quand-même nécessaire... :P

Adobe résout ce problème d'interférence entre les deux outils dédiés au Flash Player 9 (en passant, la version 9.0.45.0 a fait son apparition récemment), grâce au Flex Component Kit for Flash CS3. Cet outil va transformer un MovieClip Flash en composant UIComponent de Flex 2, en créant un fichier .swc directement "linkable" dans les paramètres d'un projet Flex 2.

Au vu du nom, j'ai d'abord cru à la possibilité d'utiliser les composants Flex 2 dans Flash (on peut toujours rêver), mais l'autre sens est en fait bien plus interessant, le graphiste travaillant généralement en amont du codeur...

Les graphistes sur Flash et les codeurs sur Flex 2 vont enfin pouvoir parler la même langue! 8-)

samedi, avril 21 2007

Flash Player 9: 83% de pénétration sur le "marché mature"

Maintenant que la vague CS3 commence à déferler sur le web, la question que tout le monde se pose avec Flash est: "Quand allons nous pouvoir l'utiliser?".

Lire la suite...

- page 1 de 15