Clone function con as3

AS3, Flex Soft! Commenta l'articolo

Clonare un oggetto e i suoi metodi

Per clonare un oggetto è sufficiente utilizzare il seguente metodo:

function clone(source:Object):* {
    var copier:ByteArray = new ByteArray();
    copier.writeObject(source);
    copier.position = 0;
    return(copier.readObject());
}


Il cui articolo originale si trova qui.

Il problema nasce quando la classe ha anche dei metodi, in questo caso la classe clonata restituisce un errore quando proviamo ad accedere ad un metodo, come illustrato nell’esempio seguente:

var t:Test=new Test();
t.test="hello";
var newObj=clone(t);
out.text=newObj.test;
out.text=newObj.sayHello();

L’errore restituito è:

TypeError: Error #1006: sayHello non è una funzione.
at test/::show()
at test/___Button2_click()

Per ovviare al problema usiamo la classe “registerClassAlias”, in questo modo:

registerClassAlias("de.benz.qualcosa", Test);
var t:Test=new Test();
t.test="hello";
var newObj=clone(t);
out.text=newObj.test;
out.text=newObj.sayHello();

Ad ogni modo Adobe ha messo a disposizione una classe che raccoglie diversi metodi utili mx.utils.ObjectUtil, tra i quali c’è “copy” che implementa proprio il metodo esposto.

Scrivi un Commento

Home | Graffiti e Disegni | Educazione | Chi siamo | Blog | Progetti | Contatti
RSS Feed Comments RSS Accedi