17 novembre 2008

MonBeauSapin.org

Ne parlons pas toujours de code... et pensons aux autres.

Etant fan de BD, et donc accrocs aux blogs BDs depuis un certain nombre d'années maintenant, j'ai eu part de cette délicieuse initiative de Pénélope Jolicoeur: monbeausapin.org. Elle a ainsi rameuté de nombreux et talentueux dessineux pour créer un blog donc l'audience se transformera en dons à la croix rouge, qui s'en servira pour acheter des cadeaux de Noël aux enfants qui ne peuvent pas en avoir faute de moyens.

J'aime l'idée, donc si je peux m'y associer en vous la faisant découvrir tant mieux! ;)

23 septembre 2008

Adobe CS4, ou le vol fait au vieux continent (MAJ)

Ça y est, les suites Adobe CS4 sont annoncées, pour fin-Octobre en Anglais et mi-Décembre.
Plein de nouveautés qu'elles sont bien, mais je ne vais pas faire duplicata du site Adobe.

Par contre, la Production Premium (exemple pas au hasard, c'est celle que je vais acheter) se voit passer de 1699dollars (soit aujourd'hui 1156euros) à 1899eurosHT pour la traversée de l'Atlantique. Au final, les européens paient 60% de plus (sans compter la TVA): autant dire que c'est carrément du vol qualifié!

Je cherche donc s'il existe une astuce légale pour l'acheter aux états-unis...

MAJ: Il semblerait qu'il ne soit absolument pas illégal d'acheter les produits Adobe aux États-Unis, dixit le service client Adobe lui-même (concernant la suite CS3 en tout cas, déjà honteusement chère en Europe à l'époque). Cela empêche seulement de disposer du support pour l'Europe.
Toujours selon ce même service client, la différence de prix est due aux garanties complémentaires accordées à l'Europe, et aux frais de traduction (j'ai bien fait la comparaison plus haut des versions anglaises, donc aucune traduction).

Reste à voir si c'est toujours valable pour la suite CS4.

3 septembre 2008

Pratiques Flex (1/?) : les bindings

Les bindings sont un aspect de Flex bien séduisants car il permettent de refléter automatiquement la modification du contenu d'une variable vers une autre. Seulement, lorsqu'ils sont utilisés intensément, ils peuvent également devenir un goulot d'étranglement en terme de performances.

Pour éviter cela, la solution est plutôt simple, et nécessite de savoir comment fonctionne la balise [Bindable] et comment elle est utilisée par le framework Flex...

Lire la suite...

29 août 2008

Flex et/ou les frameworks: pas tout le temps, pas n'importe comment

La demande est forte en ce moment sur le développement Flex.

Flex a cet espèce d'aura de "vrai outil pour les pros":

  • de ceux qu'on confie à des SSII, blindées d'ingénieurs qu'il font du code sérieux vous comprenez....
  • de ceux que les freelances proposent pour faire plus expert, parce qu'ils ont déjà affiché un item qui change quand on sélectionne une entrée dans un Combo Box, et qu'ils n'ont pas envie de recoder un bouton dans un site liquide redimensionnable...

Si j'écris ce billet, c'est parce que je me retrouve tout à tour devant ces deux situations.

Lire la suite...

20 juin 2008

Tips: Angles et géométrie

Je suis actuellement en train de me bruler les neurones sur un éditeur, permettant entre autres de modifier un visuel à la souris. De quoi devoir replonger dans nos bonnes vieilles notions de trigo.
J'en profite donc pour donner ici 2-3 astuces

Rotation d'un point

Pour passer d'un point (x, y) à un autre (x', y') en lui appliquant une rotation d'angle a, l'équation est la suivante:

        x' = x*cos(a) - y*sin(a)
        y' = x*sin(a) + y*cos(a)

Ce qui nous donne un petite méthode AS3:

public function rotatePoint(point : Point, angle : Number, isRadian : Boolean = false) : Point {
        if (ang == 0) return point.clone();
        var radAngle : Number = isRadian ? angle : angle * Math.PI / 180;
        var angleCos : Number = Math.cos(radAngle);
        var angleSin : Number = Math.sin(radAngle);
        return new Point(point.x * angleCos - point.y * angleSin, point.x * angleSin + point.y * angleCos);
}

Notez que l'on peut passer cette méthode un angle en degré (par défaut) ou en radians.

Angle fait par un vecteur

L'AS3 nous fournit une méthode toute prête: Math.atan2. Elle prend en paramètre les coordonnées du vecteur (j'utilise un point dans l'exemple) et retourne un angle en radian (d'où le flag isRadian de la méthode précédente).
Notez bien que la coordonnée 'y' est le premier argument (chez moi, FDT m'affiche 'x' en premier, je me suis fait avoir au début)

var vector : Point = new Point(mouseX, mouseY);
var angRadian : Number = Math.atan2(vector.y, vector.x);

Normaliser un angle

Selon les besoins, il peut être nécessaire d'utiliser systématiquement un angle entre 0 et 360, ou entre -180 et 180. Avec les modulos, cela peut se faire facilement:

// Get a random number between -1500 and 1500
var angle : Number = Math.random() * 3000 - 1500;

// Normalize angle between 0 and 360
var angleIn360 : Number = ((angle % 360) + 360) % 360;
// Normalize angle between -180 and 180
var angleIn180 : Number = ((angle % 360) + 540) % 360 - 180;

---

Voilà pour les ch'tites astuces de l'oncle LAlex :P

26 mai 2008

Do you speak english? Yes, I speak dummies english...

Dans la famille "J'me la pête international", je doit être le fiston!
Eh oui, je cède finalement aux sirènes de la langue de Shakespeare (enfin, il doit se retourner dans sa tombe un peu, quand-même) et ouvre mon ch'tit blog en Anglais : ApplicationDomain.net

Lire la suite...

10 avril 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.

31 mars 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...

18 mars 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

17 mars 2008

Des fois, on s'demande....

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

No comment...

25 février 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... ;)

21 février 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...

20 février 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

11 février 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! :)

7 janvier 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...

17 décembre 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...

3 décembre 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...

30 octobre 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...

26 octobre 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...

- page 1 de 15