J'aimerais aujourd'hui vous exposer un bug de l'IDE Flash, notamment de son compilo, lorsque l'on combine l'utilisation des symboles de la librairie avec une classe, et la fonctionnalité de déclaration automatique des instances (présente dans les paramètres de publication). Cette option est cochée par défaut, et lorsque l'on travaille sur la timeline, a priori le meilleur process quand on travaille avec des créas, il est à mon sens important de donner le moins de contraintes possibles à ces derniers. Il doivent pouvoir donner (ou pas) des noms aux éléments qu'ils posent sur la timeline, notamment en prévision de code que viendra brancher un développeur ou pour de simples raisons d'organisation... d'où l'importance à priori de laisser cochée l'option "Déclarer automatiquement les instances de la scène". Avec quelques instructions, les créas peuvent ainsi créer leurs assets, voire utiliser directement du code fourni par un framework ou une bibliothèque de code au moyen des propriétés "Classe" et "Classe de base" pour les éléments de la bibliothèque.
29 novembre 2011
Bug de l'IDE Flash: Bibliothèque, héritage et déclaration automatique
Par -Alexandre LEGOUT aka LAlex- le 29 novembre 2011, 23:22 - [ Divers ]
7 mars 2011
Livraison d'une application Flash
Par -Alexandre LEGOUT aka LAlex- le 7 mars 2011, 23:00 - [ Articles ]
Une fois n'est pas coutume, ce blog reprend un petit poil de la bête pour un article même pas fait (que) pour les techos... mais plutôt pour les chefs de projets.
Lorsqu'un développeur code une application ou un site, il est victime
systématiquement de l'effet "anguille". Cette pure invention de ma part
signifie juste qu'il va tester généralement les cas qu'il a lui-même prévu lors
de son développement et se faufiler naturellement entre les bugs qui pourraient
intervenir lors d'une utilisation "normale" par un utilisateur "classique".
C'est là qu'intervient la recette, généralement effectuée par le chef de
projet, ou par un autre développeur, ou dans les structures les plus
importantes par le service qualité. La recette est ensuite effectuée par le
client final pour une dernière vérification.
La recette effectuée "en interne" est donc très importante, d'abord parce que
moins il y a de bugs à la livraison finale plus on est crédible, ensuite parce
que le client final n'a pas à sa disposition la même compétence, ni les même
outils pour assurer une recette efficace.
Vous trouverez donc dans cet article un ensemble de conseils et d'outils
pour une livraison en douceur d'un projet Flash.
Je précise que je travaille sur MacOSX, mais les pratiques citées ci-dessous
sont tout aussi valables dans le monde PC.
14 septembre 2009
Déformation de vidéo
Par -Alexandre LEGOUT aka LAlex- le 14 septembre 2009, 02:37 - [ AS3 / Flex2 ]
J'ai découvert récemment le clip de la chanson "Unintended" de Muse.
Hormis la beauté de la chanson, j'ai beaucoup accroché sur l'effet donné à la
vidéo dans le clip.
Bon, ben il ne restait plus qu'à le reproduire dans Flash...
17 novembre 2008
MonBeauSapin.org
Par -Alexandre LEGOUT aka LAlex- le 17 novembre 2008, 16:35 - [ Divers ]
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)
Par -Alexandre LEGOUT aka LAlex- le 23 septembre 2008, 12:24 - [ Divers ]
Ç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
Par -Alexandre LEGOUT aka LAlex- le 3 septembre 2008, 15:41 - [ AS3 / Flex2 ]
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...
29 août 2008
Flex et/ou les frameworks: pas tout le temps, pas n'importe comment
Par -Alexandre LEGOUT aka LAlex- le 29 août 2008, 13:07 - [ Divers ]
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.
20 juin 2008
Tips: Angles et géométrie
Par -Alexandre LEGOUT aka LAlex- le 20 juin 2008, 13:45 - [ AS3 / Flex2 ]
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 ![]()
26 mai 2008
Do you speak english? Yes, I speak dummies english...
Par -Alexandre LEGOUT aka LAlex- le 26 mai 2008, 20:03 - [ Liens ]
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
10 avril 2008
Flash Player Security Update
Par -Alexandre LEGOUT aka LAlex- le 10 avril 2008, 16:39 - [ Liens ]
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...
Par -Alexandre LEGOUT aka LAlex- le 31 mars 2008, 17:30 - [ AS3 / Flex2 ]
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
18 mars 2008
Les composants, c'est pour les graphistes!
Par -Alexandre LEGOUT aka LAlex- le 18 mars 2008, 20:09 - [ AS3 / Flex2 ]
... 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! ![]()
Allez, l'exemple en pratique: Framerate.swc ![]()
PS: Merci famfamfam pour l'icone
17 mars 2008
Des fois, on s'demande....
Par -Alexandre LEGOUT aka LAlex- le 17 mars 2008, 17:28 - [ Divers ]
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...
Par -Alexandre LEGOUT aka LAlex- le 25 février 2008, 12:58 - [ AS3 / Flex2 ]
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
Par -Alexandre LEGOUT aka LAlex- le 21 février 2008, 20:02 - [ AS3 / Flex2 ]
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 :
20 février 2008
Options d'une méthode "Array-like"
Par -Alexandre LEGOUT aka LAlex- le 20 février 2008, 19:57 - [ AS3 / Flex2 ]
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
Freelance
Par -Alexandre LEGOUT aka LAlex- le 20 février 2008, 19:23 - [ Liens ]
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 ![]()
11 février 2008
Actionscript 3 pour GeSHi
Par -Alexandre LEGOUT aka LAlex- le 11 février 2008, 12:43 - [ Liens ]
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
Par -Alexandre LEGOUT aka LAlex- le 7 janvier 2008, 19:37 - [ AS3 / Flex2 ]
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...
17 décembre 2007
Interfaces et classes internal
Par -Alexandre LEGOUT aka LAlex- le 17 décembre 2007, 13:04 - [ AS3 / Flex2 ]
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...
« billets précédents - page 1 de 15
Derniers commentaires