Gregui Shigunov


Clonando objetos em Flex

Enviado em Flex, Programação por Gregui Shigunov no 10 10UTC Setembro 10UTC 2007

A algum tempo atrás eu estava com um problema em flex, onde eu precisava duplicar um objeto em flex!

Eu tinha uma VBox contendo um lista de objetos em seu dataProvider. Estava utilizando o recurso de arratar e soltar!

Esse objeto arrastado devia ir pra dentro de um TileList.

O problema, quando eu clicava duas vezes dentro de um elemento da tileList, eu poderia configurar alguns parametros no objeto, mas… A tileList poreria receber N vezes o mesmo elemento, e como no flex, tudo é por referência, tudo que eu alterava num elemento da lista, na verdade estava alterando em todos os elementos, já que era o mesmo objeto!

Para resolvet o problema, usei a seguinte classe:

package gregui

{
import flash.utils.ByteArray;

public class CloneObjet
{

/**
* Clona um Objeto

* @return object
*/
public static function clonar(o:Object):Object {


var bytes:ByteArray = new ByteArray();
bytes.writeObject(o);
bytes.position = 0;
return bytes.readObject();
}

}

Exemplo:

var exemplo:Object = new Object();
var exemplo_copy = exemplo;
exemplo.nome = “Gregui”;
exemplo_copy.nome = “Shigunov”;

ao final o objeto exemplo “É” a variável exemplo_copy, ou seja, se eu pegar o valor de “exemplo.nome”, ele seria “Shigunov”, e não “Gregui”.

Agora utilizando o clone:

var exemplo:Object = new Object();

var exemplo_copy = CloneObject.clonar(exemplo);

exemplo.nome = “Gregui”;

exemplo_copy.nome = “Shigunov” ;

ao final o objeto exemplo é um objeto e exemplo_copy é outro. Note que utilizer uma classe do tipo Objet, mas poderia ser utilizado com outra classe;

Bom, não testei com objetos muito complexo, mas funcionou para oque eu precisei. Espero que ajudem vocês também!

2 Respostas para 'Clonando objetos em Flex'

Assinar os comentários com RSS ou TrackBack para 'Clonando objetos em Flex'.

  1. Rafaelsc disse,

    Tem o ObjectUtil.copy() , mas faz basicamente o que você fez.

  2. Rodrigo disse,

    Pah, ta eu aqui procurando 1 lance de java, qdo o google me retorna a pagina.. Programação « Gregui Shigunov
    fui obrigado a deixar 1 post…

    abraços A-Gregui
    Rodrigo (caso nao lembre, sou o cara de floripa q trabalhou com voce na voxel)


Deixe uma resposta