27 octobre 2003

10.000 pages vues sur ce blog !

Il y a quelques instants, ce blog vient de franchir la barrière des 10.000 pages vues depuis le 11 Août 2003 ... 8) Ce post n'a donc absolument aucun intêret en soi, à part celui de vous remercier tous de passer me voir de temps en temps ! :D

Pas grand chose de neuf à l'horizon ...

Juste un petit mot en passant pour vous dire que ce blog n'est pas mort ! ;)

En ce moment je découvre Fast2Reply ... Une petite communauté bien sympa, centralisée sur un système de questions auquelles il faut répondre le plus vite possible ... Une nouvelle question apparaît tous les 2-3 jours, et plus on répond vite, plus on gagne de points, que la réponse soit bonne ou mauvaise. Ensuite, les bonnes réponses donnent des points supplémentaires, et les plus originales (ou "groovy") gagnent aussi des points en plus. On peut aussi créer des clans, pour se prévenir lorsque la question arrive, acheter des sorts pour brouiller les réponses des autres etc ... :P C'est sympa, et la communauté est trés fun ... :D Si vous vous inscrivez, pensez à marquer lalex en tant que parrain, ca me fait gagner quelques points ! ;) Quelques membres de MediaBox et moi avaons monté un clan, et on ne compte pas s'en laisser raconter ! :D

Pas grand chose en Flash actuellement à part un petit menu dynamique en XML qui utilise les équations de Penner en AS1 (avec Flash MX, marre de redémarrer MX 2004 et de perdre du code ... :?) ... Oui je sais, y en a marre de mes menus XML, mais moi j'aime toujours autant en faire ! :D






23 octobre 2003

L'inespéré mais trés attendu patch pour MX 2004

Alors que ne l'attendait plus, un rapport trimestriel de Macromedia prévoit un update de Flash MX 2004 pour le mois de Novembre ... information confirmée sur flash-mx.com par Macromedia. 8)

C'est bon, vous pouvez maintenant arrêter d'aller brûler un cierge tous les matins ! :D Macromedia a enfin décidé de faire une entorce à la politique menée jusqu'à maintenant, qui voulait qu'il n'y ait de mises à jour que du player entre deux releases de Flash ... Il est vrai que la colère grondait dans tous les coins de la communauté des développeurs Flash, notamment concernant ActionScript 2. :?

L'inquiètude peut maintenant persister concernant la teneur de ces modifications, dont on ne connait pas le détail. Cela va-t-il être du bricolage, comme peut l'être la traduction AS1-AS2, ou introduire un langage véritablement robuste et cohérent ? Je vois mal MM développer un compilo AS2 en 3 mois, donc j'ai peu d'espoir de ce côté la ... mais s'ils pouvaient au moins supprimer quelques comportement illogiques du langage !

En tout cas, MM semble avoir compris que le succés d'un logiciel passe par l'adhésion de ses utilisateurs, et que son monopole est plus fragile qu'il n'y paraît ... Wait and see ... 8|

10 octobre 2003

Composants v2 : pas si mal ....

Je fais actuellement un développement dans l'urgence, et je dois avouer que les composants fournis par Macromedia me snot d'un secours important. Il faut bien avouer que Macromedia a fait un effort sur ces composants par rapport au composants de Flash MX. Il n'en manque pas pour faire une application "a la windows", et leurs API sont plutôt bien étudiées.

Je n'ai pas encore eu l'occasion d'en utiliser beaucoup (j'en suis encore à TextInput et DataGrid), mais il faut bien avouer que je les trouve trés sympa à utiliser. En plus, ce qui ne gâche rien, leur look n'est pas mal non plus. 8)

Le risque avec les composants, c'est de voir fleurir un peu partout sur le web des sites qui se ressemblent tous ... :? Mais pour des applications d'entreprise, on apporte peu d'importance à l'originalité du design, et si ca peut faire gagner en temps de développement, les responsables sont toujours content ! :P Aprés tout, on se plaint rarement que les boutons de toutes les applications Windows (ou Mac) sont partout les mêmes ! ;)

Pour ce qui est des bugs ou des limitations, je vais un peu chercher du coté de l'héritage, car il faut bien avouer que le systèmes des composants "closed source" n'arrange rien ... C'est bien de pouvoir le faire pour les développeurs qui veulent vendre leurs composants, mais Macromedia aurait pu laisser les siens en opensource ... Bref, pour l'héritage et/ou la modification, étant donné le peu d'infos que distille Macromedia et les lacunes de la doc, c'est pas gagné ! :( Je vais aussi jeter un coup d'oeil sur les nouveaux composants de person13 : http://www.person13.com/components/ (merci petepx pour l'info :))

6 octobre 2003

Mon concours crea.04 ...

Voila, c'est fait ! 8) Le concours crea.04 est fini, et je suis assez content de moi ! :) ekameleon et son partenaire makizar sont venus à me rescousse pour le côté graphique, et on a réussi à faire quelque chose de plus esthétique que mes réalisations habituelles ! :P

Ce dont je suis content, c'est que le code que j'ai sorti a été développé à 95% sur place, et que donc je n'ai réutilisé que trés peu de code deja développé : en fait, juste les equations de PENNER et une classe virtuelle que j'ai créée pour les classes qui vont être affichées. :)

Par contre, je suis un peu dégouté parce que Flash est en fait limité dans les dimensions d'affichage des clips sur la scène. On prévoyait de faire un scrolling sur plusieurs plans à la Phutura, mais une fois les décors de 2000px de large faits (multiplié par 2 pour le scroll), et aprés s'être rendu compte de cette limitation, on a du se limiter à un décor fixe ... :?

Vous pouvez voir le résultat sur Flash Forum dans le post de rendu des animations du concours.

Vendredi soir, il nous a été demandé de créer des animations sur le thème "Nature, art et nouvelles technologies". Complétement pris de cours, j'ai fait une petite animation dans l'urgence avec mon moteur 3D et des fleurs à la place des points, et une image de fond faite par ekameleon. Le thème nature est là, par contre art et nouvelles technologies, c'est pas ca ... :D Vous pouvez la voir sur Flash Forum dans le post des démos

En tout cas, dans la catégorie animation, total respect à ceux qui étaient sur place avec moi et qui ont fait des anims tout simplement splendides

3 octobre 2003

Bug des composants TextInput et TextArea ?

Attention ! Je considère cela comme un bug, mais peut-être que j'utilise mal le composant tout simplement ... :?

Il est possible dans Flash d'utiliser des noms d'instances qui contiennent des points (par exemple "monNom.dInstance"). Il est évident que dans ce cas la, on ne peut plus accéder aux clips avec la notation _root.monNom.dInstance, car ActionScript l'interpréterait comme une propriété dInstance de l'objet monNom ... :roll: Mais il est toujours possible d'y accéder avec la notation par crochets _root["monNom.dInstance"] ... ;)

Eh bien figurez vous qu'il est impossible d'accéder à la propriété text d'un composant TextInput de cette manière, alors qu'on peut le faire sans aucun problème avec un TextField normal ... :(

J'ai jeté un coup d'oeil sur la classe mx.controls.TextInput, mais elle se contente de modifier la propriété text du TextField contenu à l'interieur (la propriété label est un TextField) : function setText(t:String):Void
{
        if (initializing)
        {
                initText = t;
        }
        else
        {
            var l = label;
                if (l.html == true)
                {
                        l.htmlText = t;
                }
                else
                {
                        l.text = t;
                }
        }
        // Send a "valueChanged" event
        dispatchValueChangedEvent(t);
}

Comment se fait-il alors que je ne puisse pas changer cette p*$%£ de propriété ?!? 8O Pour compléter ca, si on donne un nom avec un point à un composant TextField, même la valeur initiale que l'on renseigne dans les propriétés du composant n'est pas prise en compte ... :? Je n'ai pas trouvé d'instructions comme eval(...) dans les classes de composants, donc je ne vois vraiment pas ... :(

Le composant TextArea a le même problème, et je n'en ai pas testé d'autres ... :roll:

30 septembre 2003

La fin de nodrugnobug ?

Supersatori annonce sur la page d'accueil de www.nodrugnobug.com au nom de toute l'équipe son intention d'arrêter ce site d'informations en français sur le monde de Flash ... :( Un malheureux concours de circonstances qui a provoqué un ras le bol dans l'équipe ...

Même si ce n'est pas l'objet de ce blog, je voudrais ici donner mon opinion sur ce site et la situation qu'il rencontre actuellement.

Il est impossible de nier que les informations sont nombreuses, et surtout fraîches !!! On ne voit pas apparaître de news qui sont sorties depuis une semaine en anglais ... L'equipe de NDNB fournit un trés bon travail en terme de recherche d'informations et de réactivité ... 8)

Par contre, en ce qui me concerne, je n'aime pas beaucoup le ton du site, qui se veut une source d'informations alternative, mais peut-être un peu trop alternative, voire contestataire et manichéenne, qui a tendance à être agressive ... C'est vrai que Macromedia a tendance à dénigrer ouvertement ses utilisateurs et à céder à une politique commerciale douteuse ... :?
Mais de la à critiquer systématiquement, je trouve qu'on ne laisse pas suffisamment l'utilisateur exprimer son opinion, entre Macromedia qui dit que tout est génial, et NDNB qui dit que tout est pourri, je pense qu'on peut trouver un juste milieu, tout simplement en restant objectif, et en se contentant d'exposer les faits ... :)

Quoi qu'il en soit, je pense malgré tout qu'il est important de maintenir une source d'information francophone aussi importante que nodrugnobug, mais peut-être faut-il trouver d'autres personnes pour le faire, étant donné que les rédacteurs actuels considèrent cet arrêt comme un "immense soulagement". Continuer sans motivation ne pourrait les mener qu'à plus de cynisme ! :roll: Si vous voulez voir reprendre le site, vous pouvez quand-même écrire un mail de soutien à contact@nodrugnobug.com. S'ils recoivent 1000 mails de personnes différentes, ils ont décidé de reprendre ... :)

Alors, qui prendra le relais ?!? :D

18 septembre 2003

Bug ou pas bug ? Gestion des packages par Flash MX 2004

Peut-être que je ne vais rien apprendre à personne, mais je viens de découvrir que Flash crée ses packages sur le _root des animations. J'ai par hasard fait un createEmptyMovieClip sur _root avec un nom qui était le même que le nom d'un package, et impossible d'accéder aux classes du package !!! 8O

L'explication est sans doute que AS2 n'utilise pas le _global pour que des loadMovie n'interfèrent pas entre eux au niveau des classes, mais là ça fait quand même tout drôle ... Une autre solution aurait pu être trouvée pour un peu plus de logique ... :?

Je continue donc a penser que Macromedia n'a pas forcément fait le meilleur choix en créant un simple "traducteur" AS2 > AS1, au lieu de créer un vrai langage objet. Chez Macromedia comme dans tout développement, le bricolage n'ammène rien de bon en général ... :roll:

16 septembre 2003

Bug AS2 : propriétés virtuelles avec get et set

Je fini par me demander si je ne vais pas créer une catégorie "Bug MX 2004" :?

Robin Debreuil (toujours lui) relaie l'info trouvée par Peter Hall sur un bug présent dans les propriétés virtuelles crées avec les instruction function get et function set en AS2. En fait, lorsque l'on appelle la méthode setter, la méthode getter est appelée juste aprés !!! 8O Plus d'infos sur la mailing list Flashcoders.

15 septembre 2003

Smileys : est-ce bien raisonnable ?

Ca y est, j'ai rajouté le support de quelques smileys sur le blog ! :D Je tiens d'ailleurs à féliciter l'auteur pour se deux packs de smileys (à la base dédiés à phpBB), que je trouve super jolis : phaetorn (que je ne connais pas, je lui ai honteusement pillé ses smileys) ...

Je sais que ca n'apporte pas grand chose (on pourrait même dire que cela nuit au sérieux du blog), mais je vous rappelle que ce blog est également un terrain d'expérimentation pour moi ... ;)

Vous pouvez utiliser :


  • : ) ou : - ) => :)
  • ; ) ou ; - ) => ;)
  • : D ou : - D => :D
  • 8 O => 8O
  • 8 ) => 8)
  • : ( => :(
  • 8 | ou : roll : => 8|
  • : P => :P
  • et le plus beau : ~ ou : lalex : => :~

Syndication RSS disponible

J'ai mis en place la syndication du blog en RSS. La version utilisée est le RSS 1.0, et une syndication en RSS 2.0 sera bientôt disponible.

Vous pouvez donc maintenant récupérer les entrées de ce blog dans deux formats d'encodage (selon le logiciel que vous utilisez) : avec l'encodage UTF-8 (utilisé notamment par Flash) ou bien l'encodage ISO

Pour l'instant, les performances ne sont pas au rendez-vous, parce que les entrées de ce blog (tout comme le feed RSS) sont générées à la volée. Je vais prochainement faire un système pour générer des fichiers textes statiques, mais cela veut dire un module d'administration, que je n'ai pas encore créé ...

11 septembre 2003

Chose promise, chose due ...

Et voila, un blog tout beau tout neuf !!! :-D

Le visuel est un peu plus évolué, donc évidemment un peu plus lourd ... Mais je pense que ca vaut le coup, parce que c'est quand même plus agréable de parcourir ces pages maintenant (enfin ce n'est que mon avis ...)

Vous pouvez maintenant utiliser quelques BBCode pour vos commentaires, histoire d'y voir un peu plus clair quand vous mettez du code ... :-)

Vous avez à votre disposition les tags [ b ], [ u ] et [ i ] pour le gras, le souligné et l'italique ... Vous pouvez utiliser aussi [ quote ] (tout seul) pour faire un joli n'encadré, et le plus important : [ as ] pour écrire du code (la colorisation AS2 ne devrait pas tarder ...). Il en existe d'autres, mais ils me sont réservés (pas dispos dans les commentaires). Je mettrais demain le source de mon parseur de BBCode ici (avec un fichier de config en exemple) comme ca vous pourrez l'utiliser, et faire vos propres BBCode ... :-)

Au menu des fonctionnalités à venir : la syndication et les smileys parce que je les utilise et vous aussi (je fini par me demander si je devrais pas faire un forum moi ...)

Voila, j'espère que ca vous plait !

8 septembre 2003

Bientôt le nouveau blog avec un nouveau code !

Le nouveau design du blog ne sera pas pour cette semaine en fait ...
Je suis en train de développer le nouveau moteur qui intègrera la syndication, mais l'affichage sera à base de BBCode étendu, dont je suis en train de développer le parseur en PHP à base d'expressions régulières PERL, et d'un fichier XML contenant les infos sur les tags. Il sera donc facilement personnalisable, et je le mettrai en téléchargement ici.

Alors vous allez me dire : "Pourquoi le BBCode ?" ... Et bien tout simplement parce que c'est plus facile à mettre en place, pour avoir des mises en pages un peu plus sympas q'un texte tout bête, mais sans les inconvénients des tags HTML, qui rendent la syndication RSS plus compliquée ... Par exemple, j'utilise actuellement des 'include' PHP pour chaque article du devblog, et faire le tri des tags de tableaux et d'images pour rendre le contenu dispo sur un fichier XML est pas évident...
Une fois n'est pas coutume donc, vous aurez droit ici à un moteur d'affichage en PHP, ce qui m'éloigne pas mal de Flash en ce moment...

PS : Un grand merci à nini qui a mis un lien vers mon blog sur son site. Je ne la connais pas, mais son site est trés joli, et hébergé par un codeur dont j'aime beaucoup le travail : neo-lao.

4 septembre 2003

Manque de mise à jour, mais pour la bonne cause

Ca manque un peu de mise à jour en ce moment. En fait, je suis en train de redévelopper le moteur du blog pour pouvoir facilement proposer une syndication RSS des mes périgrnations Flashistiques ... Je prévois aussi de faire une inscription pour se tenir au courant des nouveaux post.
J'en profite également pour faire un nouveau design une peu plus "fin" et évolué (qui sera honteusement inspiré du nouveau blog de gskinner que je trouve superbe pour un blog), mais n'étant pas graphiste, ne vous attendez pas non plus à a quelque chose de révolutionnaire ...

Donc à trés bientôt ici même !!! :-D

26 août 2003

Algorithmes génétiques ou Darwin appliqué à la programmation

Depuis que je sais que Flash MX 2004 est iminent, je ne code pratiquement plus, car je n'ai pas envie de refaire la même chose en ActionScript 2. Donc je me renseigne sur les techniques de programmation, et notamment sur certains algorithmes.

J'ai découvert au travers de quelques articles sur le web la puissance des algorithmes génétiques, et je compte bientôt en faire une implémentation dans Flash. Voici donc ce que j'en ai compris :

Les algorithmes génétiques sont une solution à utiliser lorsque l'on a aucun moyen de déterminer la solution d'un problème de manière "classique". Une manière "classique" de résoudre un problème peut être d'avoir l'équation d'une solution par exemple. Dans ce cas précis, la solution sera trouvée au bout d'un temps donné. Le problème du "voyageur de commerce" est un bon contexte pour l'utilisation des alogrithmes génétiques.

Le concept des algorithmes génétiques est basé sur la théorie de l'évolution et de la sélection naturelle ennoncé par Darwin. Il consiste à créer une population "d'individus", puis d'effectuer sur cette population des croisements et des mutations aléatoires, puis d'évaluer quels sont les individus qui se rapprochent le plus de la solution cherchée, et d'éliminer ceux qui s'en éloignent le plus. On recommence alors les croisements, sur un nombre donné de générations.
Implémenter un algorithme génétique se fait donc en plusieurs étapes :


  • Créer un codage génétique : trés souvent, il s'agit d'une chaine de caractères représentants les différents "gènes".
  • Créer une méthode d'évaluation : pour évaluer le rapprochement du code génétique par rapport à la solution recherchée. Plus l'évaluation est important, plus l'individu est proche de la solution.
  • Créer une méthode de croisement : cette méthode va retourner un individu descendant de deux autres individus.
  • Créer une méthode de mutation : cette méthode va opérer une mutation sur un gène de l'individu. Elle a une probabilité peu importante de se faire.
  • Imposer une condition de fin : par exemple, "pas plus de 10 générations" ou "les deux meilleurs sont les mêmes depuis 5 générations"

Les modes de séléction pour les croisements sont multiples :

  • On croise les individus pris au hasard.
  • On croise entre eux les meilleurs individus (stratégie élitiste)
  • On choisit toujours le meilleur individu que l'on croise avec un autre pris au hasard (variante de l'élitisme)
  • On croise les parents proches de par leur évaluation.

Une fois que tout cela est fait, on crée une population aléatoire, et on lance la première série de reproduction entre des individus pris au hasard, jusqu'à ce que la condition de fin soit remplie. Et voila !!! :D

Quelques liens qui m'ont servi :


Maintenant, je vais me pencher sur les réseaux de neurones (un ordinateur capable d'apprendre, ca me laisse sans voix).

21 août 2003

Analyse pour l'optimisation de mon moteur 3D

Je me re-penche actuellement sur mon moteur 3D, entamé il y a maintenant 3 ans sur Flash 5. Depuis, je l'ai porté sur Flash 6, me permettant ainsi d'utiliser quelques notions de POO, et les API de dessin pour remplir les faces et gérer les lumières. Mais depuis, j'ai appris beaucoup plus sur notamment l'héritage et le programmation évenementielle dans Flash MX. Voici donc les reflexions que j'ai entammées sur l'optimisation de ce moteur.

Tout d'abord, un bref résumé de la structure générale d'un moteur 3D :


  • Un point en 3D comporte 3 coordonnées : x (abscisse), y (ordonnée), et z (profondeur).
  • Une transformation est composée de trois points 3D spécifiant :

    • La translation : deplacement d'un point.
    • La rotation : rotation d'un point par rapport au point d'origine.
    • L'homotétie : multiplication de la distance entre un point et le point d'origine par un ratio (pourcentage).

  • Un environnement 3D doit inclure un "point de vue", souvent appelé "Camera". Ce point de vue est situé a des coordonnées (est donc un point 3D), et peut subir des transformations (pour la caméra, l'homotétie n'existe pas).
  • L'environnement 3D contient aussi un point 3D "lumière", qui indique la position de la source lumineuse. On pourra aussi ajouter une propriété "instensité" de la source lumineuse.
  • L'environnement (ou la caméra, s'il peut y en avoir plusieurs) possède aussi une distance focale.
  • L'environnement possède aussi un point 2D indiquant le point d'origine des coordonnées à l'écran.
  • Un Vertex est un point 3D accompagné de l'ensemble des étapes intermédiaires pour arriver à le projeter sur l'écran. Il comporte :

    • Le point 3D d'origine.
    • Le point 3D obtenu aprés applications des transformations du point.
    • Le point 3D situé par rapport à l'environnement (caméra).
    • Le point 2D projeté sur l'écran.
    • Les méthodes pour passer d'une étape à l'autre. Nous les appelerons : coord2env, env2align, align2screen

  • Une face est un triangle et est donc composée de trois Vertex. On cacule également sa "normale", qui va permettre de connaitre le degré d'exposition de la face par rapport à la source lumineuse.
  • Une arrete est une ligne que l'on peut afficher ou non. Elle est composée de deux Vertex (depart et arrivée).
  • Une forme (ou un objet) est composée d'une liste de Vertex, d'Arretes et de Faces. Une forme possède également une transformation

Les instructions qui prennent le plus de temps processeur sont les transformations, notamment les rotations qui font une grande utilisation des fonctions trigonométriques sinus et cosinus.

L'optimisation va donc passer par le fait de ne pas recalculer une étape qui n'a pas changée. C'est là que la programmation évenementielle liée à l'instruction addProperty va nous servir. En effet, le addProperty permet de créer des propriétés "publiques" associées avec une méthode get et une méthode set. Il suffit donc que les méthodes set diffusent les évenements 'onChange' appropriés. Le problème délicat est aussi de placer les écouteurs aux bons endroits. Récapitulons quels sont les changements qui peuvent intervenir, et quelles sont leurs conséquences :


  • Un point change de coordonnées ou de transformation : il faut donc repasser, uniquement pour ce vertex, par les étapes coord2env, env2align, align2screen.
  • Une forme change de transformation : il faut refaire la totalité des calculs pour tous les vertex qui la composent.
  • La caméra change de position : il faut effectuer la totalité des calculs pour toutes les formes présentes.

Quoi qu'il en soit, il faut faire attentiion durant toute la programmation à appeler soit la propriété publique si l'on veut déclencher un évenement (et les traitements qui en découlent) soit la propriété privée si on veut faire cela en "toute discrétion".

Un des points qui me pose problème, est de savoir si par exemple un Vertex doit connaitre sa transformation ou pas. Si c'est la cas, il faut faire trés attention à ce que la transformation du Vertex soit toujours la même que celle de la forme à laquelle il appartient. La modification de la transformation de la forme devra alors diffuser un évenement écouté par ses Vertex afin qu'ils se mettent à jours systématiquement. En fait, la question est de savoir si un Vertex peut avoir une existence propre, ou s'il doit obligatoirement faire partie d'un forme... Si vous avez la réponse, n'hésitez pas à me la donner (argumentée bien sur...) !!!
J'ai pensé également à augmenter le nombre d'étapes de transformation du Vertex, en mettant une étape pour chaque tranformation individuelle (translation, rotation et homotétie), qui elles aussi doivent s'effectuer dans un ordre bien précis (l'homotétie n'est pas utilisée par la caméra) : 1=homotétie, 2=rotation, 3=translation. Si seule la translation change, cela éviterais de refaire une rotation, et permettrais alors une précieuse économie de calculs trigonométrique.

Voila pour mes quelques réflexions sur l'optimisation de mon moteur, qui vont être mises en pratique prochainement. Je suis bien sûr ouvert à toute suggestion ! Dés que j'aurais fini le recodage et l'optimisation de ce moteur, je le mettrai a disposition ici-même, et je compte même créer un script PHP qui permettra de transormer un fichier ASCII .3ds en format XML, importable dans le moteur.

PS : Voici un petit exemple de moteur 3D tout simplement bluffant : http://www.mx3d.com/ ... J'arriverais à faire le même !!! ;D

20 août 2003

Intercepter un appel à une méthode inexistante : __resolve

Je continue mes périgrinations sur le Wiki de FlashCoders, et voila t-y pas que je tombe sur la propriété non documentés __resolve : http://chattyfig.figleaf.com/flashcoders-wiki/index.php?__resolve. Cette propriété permet d'éxecuter une action lorsque qu'une méthode ou une propriété est appelée alors qu'elle n'existe pas. La valeur retournée par __resolve est alors utilisée à la place.
En fait, les exemples qui sont données ne me satisfont pas du tout !!! Tout d'abord pour un problème évident de ciblage. Mais je pense que les deux premiers exemples ne sont destinés qu'à faire comprendre son fonctionnement, sans compliquer l'exemple avec le ciblage. Le troisème exemple est assez simple, donc ne donne pas plus d'infos sur le ciblage et sur la gestion des chaines de prototypes.

Aprés quelques tests, il apparait que __resolve est une méthode comme les autres, possédant le même this qu'un méthode normale. En gros, utilisée dans un prototype, le this ne vas pas pointer vers le prototype du constructeur, mais bien vers l'instance elle-même. En fait, le test de la non-existence de la propriété ou méthode se fait d'abord dans toute la chaine de prototypes, puis, l'appel se fait dans l'ordre d'appel des méthodes (instance, puis prototype, puis prototype parent, etc...). Tout ca pour dire qu'un __resolve créé dans une instance ne va pas s'éxecuter si la méthode existe dans le prototype (heureusement) ... :D
Un des inconvénients majeurs est que l'on ne peut pas savoir s'il s'agit d'un appel à une méthode, ou seulement d'un appel à une propriété. Il faudrait au moins qu'on puisse savoir si l'opérateur "parenthèses" (appel à une fonction) est utilisé ...
[asfile]resolve.as[/asfile]

13 août 2003

Astuce : ranger ses bibliothèques de scripts

Une petite astuce trouvée en créant mon composant : dans le répertoire d'installation de Flash MX (par défaut C:/Program Files/Macromedia Flash MX), dans le dossier 'Configuration', vous pouvez créer un répertoire 'Include' (certains composants le créent), et mettre dedans vos librairies de fichier '.as'. Vous pouvez maintenant faire un #include depuis n'importe quel endroit sans avoir à mettre le fichier '.as' au même endroit que le .fla !!!

11 août 2003

Complément automatique du code : choisissez !

Les fonctionnalités de complément du code (le fait de vous proposer la liste des méthodes disponibles pour un objet) sont stockées dans le fichier '<Flash folder>/First Run/ActionsPanel/AsCodeHints.xml'. Vous y trouverez alors que toute variable finissant par '_mc' vous proposera la liste des méthodes de MovieClip (même si ce n'est pas un clip d'ailleurs ...).

Mais ce ne sont que les valeurs par défaut, et vous pouvez y mettre vos propres conventions de codage!

Si vous êtes développeur de composants, vous pouvez également intégrer le complément de code pour les utilisateurs de votre composant (pour les composants par défaut, vous trouverez les "codehints" dans '<Flash folder>/First Run/ActionsPanel/CustomActions/UIcomponents.xml') : par exemple, les variables finissant par '_ch' proposeront les méthodes de FCheckBox.

page 4 de 4 -