As3 : persistence des membres

Contenu du snippet

En AS3, bien qu'un objet est été supprimé, il peut encore exister viá sa référence au sein d'un autre objet. Démonstration :

Source / Exemple :


import flash.utils.* ;
import flash.events.* ;
   
   // Création d'un objet générique...
   var myObject :Object= new Object() ;

   // Insertion d'une sous classe d'EventDispatcher 
   myObject.timer= new Timer(1000,1) ;
   myObject.timer.addEventListener( TimerEvent.TIMER, traceTarget ) ;

   // Lancement du Timer
   myObject.timer.start() ;
   
   // Effacement du Timer
   delete myObject.timer ;

   // Vérification de la non existence du Timer
   trace( "(1) myObject.timer?", myObject.timer ) ; // (1) myObject.timer? undefined
   
   // Callback de l'Event
   function traceTarget( e:Event )
   :void{
      // Vérification de l'existence du Timer
      trace( "(2) e.target?", e.target ) ; // (2) e.target? [object Timer]
   }

Conclusion :


Peut connu mais bien pratique.

Est une arme a double tranchant car augmente la mémoire si mal géré ou au contraire l'allège en évitant par exemple, la création de membre dont le seul but serait la diffusion d'un évenement à un moment T : Chargement de clip, de texte, etc...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.