Utilizando o ObjectUtil no ActionScript 3.0

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:
[as]
var obj:Object = {a:”foo”, b:”bar”};
[/as]
Normalmente usariamos um loop for in para obtermos as propriedades do Objeto.
[as]
for(var i:String in obj){
trace(i +” = “+obj[i]);
}
/*
output
b = bar
a = foo
*/
[/as]
Podemos simplesmente trocar usando o metodo toString da classe ObjectUtil.
[as]
trace(ObjectUtil.toString(obj));
/*
output
(Object)#0
a = “foo”
b = “bar”
*/
[/as]
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.
[as]
/**
* package leo
* filename: showDebug.as
*/
package{
import mx.utils.ObjectUtil;
import mx.controls.Alert;
/**
*
* @author Leonardo França
* @email leo@osfederais.com
* @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;
}
}
}
}
[/as]
E o modo de usar:
[xml]
< ?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>
[/xml]
Detalhe que coloquei um segundo parametro na classe simplesmente para mostrar 1 para usar trace e 2 para usar Alert.

Leave a Reply