Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1405 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Supprimer un objet au moyen de 'this' ? (Concerne aussi les classes)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Supprimer un objet au moyen de 'this' ? (Concerne aussi les classes)

n°780701
ERC
Posté le 28-06-2004 à 16:34:41  profilanswer
 

Est-il possible de supprimer un objet à partir de 'this'?
 
     
 
    Le but est ici de crée une fonction d'auto-suppression dans une classe, et qui se chargerait de remettre à jour proprement les instances associées à un objet de la classe.
    Premièrement, donc, nous devons créer un classe, comme ceci :
 
dans le fichier 'MaClasse.as' (le nom du fichier doit être identique à celui de la classe)
     
    class MaClasse {
 
        static var Compteur : Number = 0;
             //nous créons ici un compteur relatif au nombre d'instance de MaClasse
 
        function MaClasse(){ // Constructeur de la Classe
            Compteur++; //Incrémente le nombre d'instances crées
        }
 
        function Suppression(){ // Fonction d'auto-suppression
            Compteur--; //Décremente le compteur d'intances
            /* ON POSE ICI LE SCRIPT DE SUPRESSION A DEFINIR */

        }
 
    }
 
Commentaires :
    'static' permet de définir des variables ou fonctions qui ne sont définies qu'une fois et apartiennent directement à MaClasse et non à chacune de ses intances. Quelle que soit l'instance de MaClasse qui les appelle, ces propriétés ont la même valeur. Elle ne sont accessibles que par les instances de la classe, et n'apparaissent pas dans le débogueur.
    Une fonction constructeur est une fonction appelée à chaque fois que l'on crée une nouvelle instance de la classe, elle sert généralement à initialiser les nouvelles instances et peut prendre autant de paramètres que nécéssaire. Elle porte systématiquement le même nom que la classe.
    Ici l'avantage de 'monObjet.Suppression()' par rapport à 'delete monObjet' est qu'elle met en même temps à jour le nombre d'instances de la Classe.
 
 
Maintenant que notre clase est crée, utilisons-la :
 
dans une animation flash (située dans le même dossier que MaClasse.as)
 
    import MaClasse.as;
     
    MonObjet = new MaClasse(); //Création d'une instance de MaClasse
        //Ici on peut utiliser MonObjet pour ce que l'on veut

    MonObjet.Suppression(); //Suppression de l'objet
 
 
 
Reste Maintenant à compléter la fonction MaClasse.Suppression() (autrement dit à remplacer : /* ON POSE ICI LE SCRIPT DE SUPRESSION A DEFINIR */)
 
C'est là qu'apparait le PB :
    Nous ne disposons pas du nom de l'instance, mais seulement de 'this'. Or 'this' est un pointeur et supprimer un pointeur ne supprime pas sa cible (c'est pas parceque l'on supprime le panneau indiquant la direction de Paris que Paris cesse d'exister...).
    Le problème est que le compilateur est censé gérer les pointeur automatiquement, et l'on ne pas pas agir là-dessus.
    A noter aussi, que Macromedia n'a pas jugé bon de proposer le pendant de la fonction constructeur, à savoir la fonction destructeur (présente, par exemple, en C++) qui est appelée lorsque l'on supprime l'objet (à l'appel de delete 'MonObjet').
 
les divers codes suivants sont inopérants :
   delete this;
   void(this);
   this = Void; //la valeur undefined est affectée à this, mais c'est sans intérêt
   this = undefined; // idem
   ...
 
 
 
 
Si certains d'entre vous ont des idées, elles sont les bienvenues...
 
 

mood
Publicité
Posté le 28-06-2004 à 16:34:41  profilanswer
 

n°782611
afad
Posté le 30-06-2004 à 16:01:04  profilanswer
 

Salut,
 
Est ce que tu as essayé de cibler ton instance en utilisant un eval();
eval permet de cibler le contenu d'une variable et non le nom de la variable elle même. Flash assimilera this en terme de cible et non de pointeur.
 
A+
aFaD
Une aide en programmation : http://www.progforum.net

n°783054
ERC
Posté le 30-06-2004 à 23:56:04  profilanswer
 

  eval() est fait pour evaluer des chaines de charactères. Avec 'this' en paramètres, généralement c'est pas terrible. Tu obtiens généralement 'undefined' (sauf peut être si tu est dans un objet de la classe error, auquel cas c'est la chîne de caratère contenu par la propriété 'Error.message' qui est évaluée...). Je pense donc que l'on peut oublier les formules du type eval(this).
    C'était bien essayé tout de même. Merci pour ton idée.

n°783190
jagstang
Pa Capona ಠ_ಠ
Posté le 01-07-2004 à 09:25:12  profilanswer
 

afad a écrit :

Salut,
 
Est ce que tu as essayé de cibler ton instance en utilisant un eval();
eval permet de cibler le contenu d'une variable et non le nom de la variable elle même. Flash assimilera this en terme de cible et non de pointeur.
 
A+
aFaD
Une aide en programmation : http://www.progforum.net


SPAM :o [:ban]
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  Supprimer un objet au moyen de 'this' ? (Concerne aussi les classes)

 

Sujets relatifs
Liste chainee, supprimer le maillon lu.[OpenGL] Dessiner du texte 2D (à plat) et en texture sur un objet 3D
Supprimer les fichier contenu ds Temp avec un .bat a chaque reboot??[OpenGL] Orienter un objet
base de donnée objetComment faire pour qu'un objet soit global
comment supprimer la bare bleu de la fenêtre ou ya _ ■ X ?Où est ma faute? msg d'erreur("objet requis")
supprimer verrou base de donnée oracle 8.1.7ActiveX , objet dans page HTML
Plus de sujets relatifs à : Supprimer un objet au moyen de 'this' ? (Concerne aussi les classes)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR