X-Ray en proyectos Flash Open Source

Para el que no conozca el proyecto X-Ray le resumiré que es una potente herramienta para poder inspeccionar nuestras aplicaciones SWF en tiempo de ejecución como si de un depurador se tratara. Esto se realiza gracias a la magia del objeto LocalConnection que nos permite realizar una comunicación entre dos SWFs corriendo en local. En nuestro caso un SWF será nuestra aplicación a la cuál le añadiremos un pequeño conector para permitir la comunicación con el segundo SWF que no es más que la interface de X-Ray donde podremos consultar las diferentes variables, objetos y MovieClips que se encuentren en nuestra aplicación a la hora de tomar la foto.

Para utilizar X-Ray con proyectos Flash libres (ya sabeis… ASDT, MTASC, Eclipse y SWFMill) podeis usar la versión denominada “Connector Only“, la cual puede ser descargada desde aquí­ (la revisión actual del connector es la 1.4.5). Además necesitareis la interface de X-Ray cuya versión más reciente (la 1.2.5 en estos momentos) está en esta otra url.

Dentro del fichero podeis encontrar un directorio de clases. Para poder reutilizar esta carpeta os recomiendo que la situeis en un directorio fuera del proyecto actual para que podais compartir esas clases. Yo uso una carpeta lib donde tengo una subcarpeta para cada conjunto de clases (como pueden ser las clases de animation package, remoting, mx parcheadas,etc…) que suelo reutilizar en cada proyecto. Para estas he creado una carpeta xray_classes. Dentro de dicha carpeta he copiado solo la subcarpeta com debido a que ni uso las clases mx ni flashout).

Dentro de mi build.xml (de ANT), tengo una nueva variable que referencia estas clases, la cuál utilizare luego para construir mi SWF con MTASC encadenandola en el path:

<property name="xray_classes" value="${lib}/xray_classes"/>

Para comprobar que todo está correctamente configurado, usé el siguiente código en la clase principal de mi proyecto:

/* Importar la clase XRayLoader para cargar el conector
* Dicho conector lo podeis encontrar en el zip y se llama: ConnectorOnly_as2_fp7_OS_1.4.5.swf
* El conector debeis de copiarlo a la carpeta donde tengais vuestro swf
*/
import com.blitzagency.xray.util.XrayLoader;

/* El siguiente código dee estar en el constructor de vuestra clase
* principal
*/
// --- XRAY
var listener:Object = new Object();
listener.xrayLoadComplete = function(){
	XrayLoader.trace("Xray has loaded...");
}
XrayLoader.addEventListener("xrayLoadComplete", listener);
XrayLoader.loadConnector("ConnectorOnly_as2_fp7_OS_1.4.5.swf", this);

Una vez que compileis vuestra aplicación esta será capaz de cargar el conector de X-Ray y comunicarse con la interface que hace las veces de debugger. Esta última debeis arrancarla después de vuestra aplicación para que la magia tenga efecto.

Lo bueno de este método es que podeis configurar vuestro build.xml y la clase donde insertais el código anterior para automatizar vuestros pasos a producción y solo disponer del “modo debug” cuando os interese.

4 Comentarios

  1. Pongo en mi clase de configuracion el codigo, compilo incluyendo en el classpath la carpeta ‘com’ y lanzo mi swf. Después lanzo la intefaz de xray pero me da error de conexion.

    Que hay que hacer con el archivo ConnectorOnly_as2_fp7_OS_1.4.5.swf?

    gracias por el articulo. Como siempre trabajo con test de unidades nunca he necesitado realmente un debugger, pero tenia ganas de empezar a utilizar xray.

  2. Hola Miguel,

    el fichero “ConnectorOnly_as2_fp7_OS_1.4.5.swf” debes ponerlo en la carpeta donde tengas el swf que tenga que cargarlo (o puedes usar otro path, pero luego tienes que indicarlo al cargarlo).

    Te aconsejo que pongas alguna traza para comprobar que cargas el conector, luego tienes que arrancar primero tu aplicacion (esto cargara el conector y dejará todo preparado), luego tienes que arrancar el debugger y aquí­. abajo a la derecha veras una luz roja que se pondrá verde cuando se realice la conexión

    Al menos así­ es como yo lo he hecho 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *