Como criar objetos dinâmicos com Flex

Em Flex, utiliza-se duas linguagens para compor uma aplicação: MXML e ActionScript 3 (AC3). A primeira é uma linguagem de marcação que representa objetos estáticos de uma tela, semelhante ao Document Object Model (DOM) de uma página web. ActionScript 3 por sua vez é a linguagem do FlashPlayer com suporte a orientação a objetos.

Por | @oficinadanet Programação

Em Flex, utiliza-se duas linguagens para compor uma aplicação: MXML e ActionScript 3 (AC3). A primeira é uma linguagem de marcação que representa objetos estáticos de uma tela, semelhante ao Document Object Model (DOM) de uma página web. ActionScript 3 por sua vez é a linguagem do FlashPlayer com suporte a orientação a objetos.
Como toda linguagem orientada a objetos ou com suporte a orientação, AC3 permite montar objetos, e uma das suas formas de criação é mostrada a seguir:

var objeto:Object = {propriedade1:"valor1", propriedade2:"valor2"};


Na linha acima, é criado uma variável do tipo objeto. Não é necessário instanciar um objeto usando a declaração "new", pois Object é uma classe nativa do Flex. O objeto criado acima contém duas propriedades com seus respectivos valores.

trace(objeto.propriedade1); // valor1
trace(objeto.propriedade2); // valor2


Objetos são constituídos de propriedades e valores. No exemplo acima, definimos quais eram as propriedades e quais eram seus valores. Os valores podem ser formados por qualquer tipo de dados ou qualquer objeto. Por exemplo, os valores poderiam ser dados provenientes do banco de dados no formato de string, int ou date; poderia ser um objeto VBox, um componente customizado ou qualquer outra coisa.

Entretanto, as propriedades precisam ser definidas na criação do objeto e eles não representam nenhum tipo de dado como acontece com seu valor.
// Exemplo de criação errada de objeto dinâmico
var objetoBancoDados:Object = {resultadoSqlNomePropriedade[0]: resultadoSqlValor[0]}; // Errado


No código acima, o compilador do Flex acusará erro, porque propriedade de objeto não guarda, não representa nenhum tipo de dado, mas no código, a propriedade está tentando ser criada dinamicamente e recebendo um dado de algum tipo. De vez em quando, existe a necessidade de se ter um objeto dinâmico, um objeto que seja criado com
bases em parâmetros provenientes de um banco de dados por exemplo, de um XML, de um arquivo texto, de um webService... Então como criar um objeto totalmente dinâmico?

A solução para um objeto dinâmico em Flex


Vejamos passo a passo como superar a dificuldade apresentada anteriormente. Utilizaremos uma técnica chamada JSON (JavaScript Object Notation), que, apesar do nome, não é exclusiva da linguagem JavaScript. JSON pode ser incorporada em qualquer linguagem com suporte a objetos.

Consiste em escrever todo seu objeto como tipo de dado String, seguindo a sintaxe de construção de um objeto no Flex (exceto pelo fato de a propriedade ser escrita como uma string). Exemplo:

var json:String = '{"propriedade1":"valor1","propriedade2":"valor2"}';


Uma vez escrita nosso json, precisamos tranformá-lo em objeto propriamente dito. Existe uma biblioteca capaz de faz isso automaticamente para nós. Chama-se "as3corelib.swc" (veja no final do artigo o link para download), nessa biblioteca, há vários métodos estáticos que podem ser usados assim que a biblioteca for
alocada no projeto (assim que esteja na pasta Lib do projeto e configurada corretamente no Library path).

var json:String = '{"propriedade1":"valor1","propriedade2":"valor2"}';
var objeto:Object = JSON.decode(json);


Na linha 2, o método estático "decode" da classe JSON avalia a string e a tranforma em objeto. Se a string estiver mal formatada, uma mensagem de erro aparecerá. Seguindo o padrão de notação estabelecido pelo JSON, não haverá erros.

var jsonBancoDados:String = '{"'   resultadoSqlNomePropriedade[0]   '" : "'   resultadoSqlValor[0]   '"}';
var objeto:Object = JSON.decode(jsonBancoDados);


Pronto, no código acima, um objeto é construído dinamicamente no Flex. Os dados que constituem a propriedade e o valor veem do banco de dados. A necessidade de um objeto dinâmico é encontrada em vários casos. Um exemplo: quando se quer um objeto cujas propriedades sejam os resultados de um coluna de uma consulta SQL.

Biblioteca JSON para Flex: http://code.google.com/p/as3corelib/
JSON: http://www.json.org/

Mais sobre: flex, contribuição
Share Tweet
DESTAQUES
Mais compartilhados
Comentários