Dans la vie, faut tracer

  • warning: array_map(): Argument #2 should be an array in /var/www/titouille.ch/www/modules/system/system.module on line 1050.
  • warning: array_keys() expects parameter 1 to be array, null given in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
  • warning: Invalid argument supplied for foreach() in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
Portrait de titouille

Tracer, tracer et toujours tracer. Le lot quotidien du développeur acharné Tongue

Etant totalement débutant en AS3, et me sentant bien démuni de par ce fait, j'y vais un peu à l'arrache.
Sans une interface à la Flex Builder, on à vite l'impression de patauger lorsqu'on cherche des choses toutes simples.

Une classe de logging. Un traceur. Des classes, et de multiples traceurs, aille aille aille.
Le choix ne fut pas si difficile que ça. Je compile mes fichier AS3 avec JEdit (via process Ant) et le compilateur mxmlc.
Donc exit le trace standard, je ne sais d'ailleurs pas si il est possible de passer une classe de logging pour utiliser directement la commande trace comme on pouvait le faire avec MTASC. J'ai cherché dans les options de compilation, mais je n'ai pas trouvé mon bonheur. Idem sur la toile.



Je me suis alors tourné vers des solutions alternatives.

FlashTracer tout d'abord. C'est un module FireFox développé par le renommé Alessandro Crugnola (SE|PY, AMFPHP entre autres). Oula, voilà qui est intéressant, me suis-je dit. Passant par mon navigateur favori pour afficher les animations compilées en AS3, j'ai tout de suite pensé que FlashTracer serait un outil idéal pour travailler.
Installation rapide, je teste, et... non... ça ne fonctionne pas... J'ai cherché plusieurs heures sur le net, dans les forums, mais aucune réponse satisfaisante. je n'arrive pas à faire fonctionner FlashTracer sur ma configuration...

Bref... je repars en quête du graal, et je tombe sur SOS. Tiens, il a l'air sympathique, celui-là. options de coloration, passage des infos par socket. Il semble robuste, fiable. Allons-y, je l'installe. J'importe ce qu'il faut, je teste... nada... pire encore : avec les animations AS3, un message d'erreur qui me retournera page blanche dans toutes mes recherches sur internet. Le message inconnu !! Laughing out loud

Je continue mes pérégrinations sur le web. Voici qu'arrive Alcon. Pitié, faites que ça soit le bon, me dis-je. J'installe le tout, je lance la bête. Basé sur les connexions locales, une classe dédiée à l'AS3. Je tente donc un Debug.trace dans mon code... Hourra, trois fois Hourra ! ça fonctionne enfin Smile Je peux enfin tracer mes informations correctement et faire des tests sans avoir à implémenter un textfield de log dans mon animation à chaque fois.



Via les options globales de JEdit (Utilities->global options->Tool Bar), je rajoute un bouton dans la barre d'outil avec une macro qui lance Alcon.

String newText = runCommandInConsole(view,"System", "C:/dev/flash/alcon/Alcon.exe");

Alcon est muni d'un fichier de configuration qui permet de spécifier quelles sont les positions et dimensions à utiliser à l'ouverture du logger, je peux donc le paramétrer pour qu'il s'affiche toujours au même endroit et dans des dimensions adéquates pour travailler conjointement avec un navigateur et JEdit.

fichier de config :

FONT_FACE = Verdana
FONT_SIZE = 12
BUFFER_LENGTH = 200000
WIN_XPOS = 0
WIN_YPOS = 0
WIN_WIDTH = 300
WIN_HEIGHT = 848
WIN_STAYONTOP = false
SHOW_KEYWORDS = true
SHOW_ORIGIN = false
KEYWORD_0 = [DEBUG]
KEYWORD_1 =  [INFO]
KEYWORD_2 =  [WARN]
KEYWORD_3 = [ERROR]
KEYWORD_4 = [FATAL]
USE_COLORS = true
BG_COLOR = ffffff
LEVEL_0_COLOR = 0055aa
LEVEL_1_COLOR = 000000
LEVEL_2_COLOR = ff8800
LEVEL_3_COLOR = ff3300
LEVEL_4_COLOR = bb0000
DELIMITER = ----------------------------------------

Le must aurait été de pouvoir intégrer directement l'application, voire même les traces dans JEdit, mais en ce qui concerne l'application, je n'ai pas trouvé de module "conteneur" qui permette ce genre d'utilisation, et en ce qui concerne l'intégration des traces dans un quelconque listing de JEdit, ce n'est pas dans mes préoccupations du moment, j'ai déjà assez à faire avec AS3. Je me contente d'Alcon qui va m'être très utile pour la suite Smile



Dans le même ordre d'idée, je me demandais comment placer cette méthode en "global" en quelque sorte, pour ne pas avoir à inscrire à chaque fois l'importation de classe. J'ai pu lire une solution sur le wiki média-box mais ça me semblait un peu à l'arrache, je préfère rester dans l'esprit "héritage" et au besoin, définir mes propres sous-classes qui importeront les éléments dont j'aurai besoin et dont j'hériterai pour la construction de mes animations / applications. J'ai d'ailleurs pu constater qu'il est de toute façon nécessaire d'importer la classe flash.util.trace pour utiliser la méthode "trace". Au final, même combat.




Portrait de titouille

FlashTracer

Je suis en train de me remettre à faire de l'AS3, et donc à réinstaller tout le tremblement (merci titouille d'avoir fait des mini-tuto !! Laughing out loud)...

Je me questionnais quant à mes problèmes concernant FlashTracer et vient de faire quelques essais pour voir si il était toujours présent et j'ai fini par réussir à le régler de manière toute simple.

J'ai tout d'abord installé la dernière version du plug-in (2.0.0 avec FireFox 2.0.0.9) et installé le flash player 9 version débug comme indiqué lors du téléchargement de l'extension. Puis j'ai testé quelque peu les traces, mais ça ne fonctionnait pas. Je suis ensuite allé sur le site de Alessandro et j'ai trouvé le thread faisant référence à son composant, thread redirigeant vers la discussion qu'il a engendré. Et là, il est expliqué que le fichier de log (dans les options de FlashTracer) doit pointer vers le répertoire C:\Documents and Settings\{user}\Application Data\Macromedia\Flash Player\Logs\flashlog.txt pour que ça fonctionne.

Après avoir fait la modification dans les options de configuration, c'est bien là que se situait le manque, FlashTracer me renvoie maintenant toutes les traces que je place dans mes classes.

Youpi !! Je trouvais ce plug-in très intéressant car directement intégré dans le navigateur, ça permettait de ne pas avoir à ouvrir plusieurs programmes différents pour débugger correctement ses applications. Je peux maintenant l'utiliser pleinement pour mes besoins, yes !