SWF TRACER
Escrito el 12/04/2004 por Xavi Beumala
- Para Flash Player 6 (se requiere para el visualizador el v6r79)
- Para Flash Player 7
Lo prometido es deuda y como se suele decir, más vale tarde que nunca.
En uno de los primeros posts de este blog ya comenté mi intención de desarrollar esta mini aplicación, y no ha sido hasta hoy que me he decidido a hacerla, no por falta de ganas sinó falta de tiempo.
En mis desarrollos diarios, y creo que al igual que muchos de vosotros, utilizo muchas veces la instrucción trace. El problema de ésta es que al final no hay quien se aclare con la ventana de salida ya que hay un sinfín de mensajes entre los que cuesta bastante localizar lo que uno busca. Con la aparición de MX2004 y JSFL pensé que se podría personalizar la ventana salida, pero no es así.
SWF Tracer nos permite utilizar la instrucción trace de una forma ordenada y no caótica, permitiéndonos agrupar los distintos mensajes de una forma conceptual de forma parecida a un logger. Otra utilidad y no menos importante es que nos permite visualizar los traces no sólo desde el IDE, sinó que podemos ver los trace's que manden archivos swf's embebidos dentro del navegador o desde un proyector.
La aplicación consta de dos partes. Por un lado tenemos el visor que nos permite visualizar los mensajes mandados desde nuestro código. Por otra parte consta de una clase estática a través de la cual mandamos los mensajes al visualizador.

Para mandar un mensaje al visualizador sólo tenemos que utilizar la instrucción: Tracer.trace("mi mensaje","com.code4net.prueba"); Donde Tracer es una clase estática que encontraréis en el zip de la descarga. Esta clase la tendréis que copiar donde queráis (un buen sitio sería en la carpeta flash mx2004/en/first run/classes) y después referenciarla desde vuestros archivos (ya sea con un import desde mx2004 o con un #include desde MX).
El primer parámetro de la function Tracer.trace("param1","aqui.tu.classpath") es el mensaje que se va a mostrar. El segundo parámetro es la ruta de destino donde se mostrará. El árbol que hay en la parte izquierda de la aplicación se genera a partir de estas rutas (similares a un classPath). De esta forma cuando queramos ver lo que se ha traceado tendremos que ir exactamente a la rama del árbol que deseemos.
Esta estructura nos permite tener constancia en todo momento de qué clase ha traceado el mensaje, o incluso podemos crear una ruta para mostrar distintos flujos de nuestra aplicación.
En la parte inferior de SWF Tracer se ha añadido una tabla para añadir shortcuts. Estos nos ahorrarán tener que escribir la ruta entera del destino donde queremos escribir la respuesta. Por ejemplo, si añado un shortcut con Reference = "as.system.xml.XML2Object" y Shortcut = "x2", entonces podré hacer mis traces como Tracer.trace("mensaje1","x2") si necesidad de hacer Tracer.trace("mensaje1","as.system.xml.XML2Object"). Lo cual nos agiliza un poquito la tarea.
Por último es aconsejable hacer las llamadas a Tracer.trace desde dentro de un trace. Esto es: trace(Tracer.trace("hola","x2"));. Esto nos permitirá eliminar todos los Tracer.trace sin necesidad de localizarlos en nuestro código. En opciones de publicación tendríamos que marcar la opción de eliminar los trace. De esta forma también eliminaríamos un código que en el producto final no tiene ningún tipo de sentido.
Quien quiera integrar el SWFTracer en el IDE de Flash MX2004, sólo tiene que copiar SWFTracer.swf en la carpeta C:\Archivos de programa\Macromedia\Flash MX 2004\en\First Run\WindowSWF. En Flash MX la carpeta tiene que estar en la ruta C:\Documents and Settings\Xavi\Datos de programa\Macromedia\Flash MX\Configuration\WindowSWF cada uno cambiando su nombre de usuario.
Esta es la primera versión del SWFTracer pero espero ir apliando sus funcionalidades (ya tengo algunas en mente). Si a alguien se le ocurre alguna cosa que le pueda dotar de más utilidad que lo diga e intentaré desarrollarla. De la misma forma, si alguien detecta algún Bug, que me lo diga :-).
Aquí os dejo las descargas. Espero que os sea de utilidad:
- Para Flash Player 6 (se requiere para el visualizador el v6r79)
- Para Flash Player 7
PD: Existen 2 versiones. Dependiendo de si el origen desde donde se hacen las llamadas a Tracer.trace es un swf publicado para Flash Player 6 o para Flash Player 7. Esto es debido a que las películas para el player 7 no se pueden comunicar con las películas para el player 6 mediante LocalConnection (yo lo considero un bug del nuevo player). Por último sólo comentar que no distribuyo el .fla ya que incluye componentes de Macromedia, y no me queda claro en el contrato de licencia si estos son distribuibles (creo que no).