Consola para debug compilando con mxmlc
4 seguidores
Estoy probando producir contenido flash sin usar el IDE y el compilador.
Tengo lo siguiente:
* TextMate con el bundle de actionscript3 y el de flex.
* Flex 3 SDK instalado
Creo el proyecto y compilo sin problemas usando mxmlc, luego pruebo el contenido, pero echo de menos el trace, he buscado por internet un rato y he visto Xtrace, pero es para as2, aunque sería sencillo hacer el port a as3 quiero saber si hay otras soluciones.
¿Qué usáis vosotros para debug? ¿Usáis consola de trazas o tenéis algún otro método para hacer el seguimiento de la aplicación?
Ventd'Aval
Zlog!... ah no, es solo as2 tambien.... :P
lo unico q se me ocurre es el flash-thunderbolt q viene con gaia...
Odrakir
Yo uso Arthropod, es ligero, sencillo y está programado en AIR.
http://arthropod.stopp.se/
oskitar
Arthropod y Thunderbolt parece que son parecidos, se lanza una aplicación externa Air y las trazas a esa aplicación.
Voy a probar los dos a ver que tal están y os digo algo.
Muchas gracias señores.
juandelgado
Ventd’Aval
¿Disculpa?
http://code.google.com/p/zcode/source/browse/trunk/as3/zlog.as
: )
No lo he hecho público porque no es la versión oficial y no sé cuándo la habrá ni cómo. De hecho, la versión AS3 manda las trazas a Firebug, no a ZLog porque cuando lo intenté me daba problemas al mandar una tonelada de Local Connections. Tengo que volver a mirarlo para sacar la versión AS3 completa.
Y otra cosa que no me gusta NADA es que tienes que llenar tu código de llamadas zlog("wadus") cuando antes usaba el trace de toda la vida que MTASC se encargaba de pasar a llamadas ZLog, pero bueno.
El caso, yo ahora mismo uso el SDK de Flex, con llamadas directas a ZLog que salen por la consola de Firebug. No es lo mejor, pero menos es nada.
Ea!
oskitar
Zárate
Eso es verdad, con MTASC tenías el "-trace" para sobreescribir el trace, hay mucha gente en contra de usar el trace, porque ensucia mucho el código.
Una posible solución para quitar el código sucio si construimos con "ant" la aplicación: http://www.danielhai.com/blog/?p=51
La idea es colocar el código que queramos omitir al final del proyecto entre comentarios específicos y luego añadir un regexp que recorra los archivos a editar y elimine el código dentro.
myfunc(){
//[DEBUG START]
trace ("....")
//[DEBUG END]
}
Esta solución no solo valdría para el código de debug sino para también otro tipo de inserciones que quisieramos borrar, como trozos de código comentado o notas de desarrollo.
oskitar
Por cierto la consola de trazas que más me ha gustado es arthropod.
Sólo echo de menos el que pinte los objetos completos, hay un método
Debug.object(obj:*)
Pero sólo pinta el nivel de datos del objeto, es decir si tenemos un objeto como esto:{
cadena:"wadus",
miobjeto:{
numero:12,
otracadena:"wadus wadus"
},
myArray:[
1,
2,
3,
"cadena",
{
a:1,
b:"b"
}
]
}
Sólo nos pinta esto :
myArray: 1,2,3,cadena,[object Object]
cadena: WQW
miobjeto: [object Object]
Y ya que estamos, ¿Cómo trazáis el contenido completo de un objeto dinámico?.
oskitar
Vale, pues para tener el contenido completo de un objeto dinámico, voy a hacer esto:
Debug.log(objectToString(obj));
con objectToString como función recursiva:
public function objectToString ( obj:*, _level:String=""): String {
if (obj){
var s: String = "";
if (obj is Function){
s += "{...}";
}else {
var objData :String="";
for(var item:* in obj) {
objData += "\n"+_level + item +":" + obj[item].constructor +"= " + ((obj[item] is String )?"\""+obj[item]+"\"":(obj[item] is Number )?obj[item] : objectToString (obj[item],_level+"\t")) + ", ";
}
s+= objData.substring(0,objData.length-2)+"\n"+(_level.substring(0,_level.length-1));
if (obj is Array){
s = ("[" + s) + "]";
}else {
s = ("{" + s) + "}";
}
}
return s;
}else{
return null;
}
}
oskitar
ande va a parar!! mucho mejor así