Non credo che questo funzioni poi così tanto bene..codice:var sprite:Sprite=new Sprite(); addChild(sprite); removeChild(sprite); trace(sprite); sprite=null; trace(sprite);
Ho fatto dei test...
"Clip" è la classe data come linkage (concatenamento) ad un quadrato verde in libreria..codice:public class Main extends MovieClip{ private var mc:Clip; public function Main(){ mc = new Clip(); addChild(mc); trace('Prima di remove '+mc); //Prima di remove [object Clip] removeChild(mc); trace('Dopo di remove '+mc); //Dopo di remove [object Clip] mc=null; trace('Dopo di null '+mc); //Dopo di null null } }
Nel file Clip.as ho scritto:
Mandato in esecuzione il filmato questo è quello che è uscito in Output:codice:public class Clip extends MovieClip{ public function Clip(){ trace('Clip istanziato'); this.addEventListener(Event.ENTER_FRAME,Mov); } private function Mov(e:Event):void{ trace(this); } }
Dove [object Clip] si ripete all'infinito..codice:Clip istanziato Prima di remove [object Clip] Dopo di remove [object Clip] Dopo di null null [object Clip] [object Clip] [object Clip] [object Clip] [object Clip] [object Clip] [object Clip] [object Clip] [object Clip] [object Clip]
Fate le vostre considerazioni...
Il problema è abbastanza serio in quando in molte applicazioni certe classi, ad esempio, gestiscono griglie fotografiche con all'interno parecchi MovieClip e Listeners ed il fatto che per eliminare l'eccesso di calcoli e spazio in memoria bisognerebbe andare a eliminarli uno per uno oltre che essere un palla colossale significherebbe che da qui in avanti ogni applicazione dorebbe essere costruita con dei vettori, o altro, che tengono conto di tutto ciò che può essere eliminato...
Se qualcuno è riuscito a risolvere il problema alla radice vi prego rispondete..
![]()
![]()

Rispondi quotando
