Dic 02
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.
Ultimi Commenti