As3 : persistence des membres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 520 fois - Téléchargée 17 fois

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

Ajouter un commentaire

Commentaires

top30
Messages postés
1158
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
6 août 2010
-
je crois qu'apparement "Nicolas9303", tu n'as pas tout compris.
C'est pas grave...

J'espere que les prochains comment te l'expliqueront.
nicolas93903
Messages postés
1
Date d'inscription
dimanche 9 décembre 2007
Statut
Membre
Dernière intervention
9 décembre 2007
-
peut etre que si tu avais simplement ajouté les bons arguments à ton addEventListener ce genre de fuite de mémoire n'aurait pas lieu.
cs_MADenigma
Messages postés
53
Date d'inscription
jeudi 1 décembre 2005
Statut
Membre
Dernière intervention
6 septembre 2010
-
Très bonne astuce :) merci

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.