Para quem desenvolve em Flash é normal a utilização do metodo trace para debugar suas aplicaçãos, no Flex Builder é possivel também usar o trace, mas ele so é mostrado no console quando você debuga uma aplicação. No ActionScript 3.0 foi introduzido novas classes, entre elas a ObjectUtil para trabalhar com objetos e como tudo no Flex é objeto, seja variavel, função etc, fica mais facil para entendermos como nossa aplicação caminha.
Por exemplo, temos o seguinte objeto:
-
var obj:Object = {a:"foo", b:"bar"};
Normalmente usariamos um loop for in para obtermos as propriedades do Objeto.
-
for(var i:String in obj){
-
trace(i +" = "+obj[i]);
-
}
-
/*
-
output
-
b = bar
-
a = foo
-
*/
Podemos simplesmente trocar usando o metodo toString da classe ObjectUtil.
-
trace(ObjectUtil.toString(obj));
-
/*
-
output
-
(Object)#0
-
a = "foo"
-
b = "bar"
-
*/
Você pode testar e vendo o resultado com outros tipos de dados do ActionScript 3.0, como Xml, arrays etc
Para facilitar meu trabalho criei uma classe bem simples para implementar essas caracteristicas.
-
/**
-
* package leo
-
* filename: showDebug.as
-
*/
-
package{
-
import mx.utils.ObjectUtil;
-
import mx.controls.Alert;
-
/**
-
*
-
* @author Leonardo França
-
* @email [email protected]
-
* @blog www.leonardofranca.com.br
-
* class showDebug
-
*
-
*/
-
public class showDebug extends ObjectUtil{
-
/**
-
* Show Debug details
-
* @param str
-
* @param tipo
-
* @return
-
*
-
*/
-
public function showDebug(str:*,tipo:uint){
-
switch(tipo){
-
case 1:
-
trace(ObjectUtil.toString(str));
-
break;
-
case 2:
-
Alert.show(ObjectUtil.toString(str),"Debug");
-
break;
-
default:
-
//no debug
-
break;
-
}
-
}
-
}
-
}
E o modo de usar:
-
<?xml version="1.0" encoding="utf-8"?>
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
-
<mx:Script>
-
<![CDATA[
-
import showDebug;
-
public var obj:Object = {a:"foo", b:"bar"};
-
public function init():void{
-
new showDebug(obj,1);
-
}
-
]]>
-
</ mx:Script>
-
</ mx:Application>
Detalhe que coloquei um segundo parametro na classe simplesmente para mostrar 1 para usar trace e 2 para usar Alert.
