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

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  detruire un objet instancié par createClassObject()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

detruire un objet instancié par createClassObject()

n°1314168
bob007
Posté le 27-02-2006 à 11:26:46  profilanswer
 

Salut all !
 
Voila le probleme.
J'ai ca:
RB11 = RadioButton(_level.createClassObject(RadioButton, "RBtest", _level.getNextHighestDepth()));
RB11.data = "1";
RB11._name = "RB11";
RB11.label = this.r1;
RB11.groupName = this.Qlabel;
RB11.move(30, 130);
 
(dans une fonction)
 
je voudrais, dans la frame d'apres détruire l'objet RB11 (autrement il va se voir dans toutes les frames et c'est pas du tout ce que je recherche).
 
Le probleme est que je n'arrive pas a le détruire. J'ai essayé:
RB11.destroyObject("RBtest" );
destroyObjet("RBtest" );
destroyObject(RB11);
...
bref plein de choses comme ca, rien n'y fait!
 
Le probleme ne vient pas de l'accessibilité de l'objet RB11 dans ma deuxieme frame puissque si je fais :
RB11._label = "coucou";
le label est effectivement changé.
 
Merci  :jap:  :jap: beaucoup par avance de votre aide.
 

mood
Publicité
Posté le 27-02-2006 à 11:26:46  profilanswer
 

n°1314221
mechkurt
Posté le 27-02-2006 à 12:21:09  profilanswer
 

[:sh@rdar]  

Citation :


L'exemple suivant supprime l'occurrence TextInput my_ti lorsque vous cliquez sur le bouton. Un composant Button et un composant TextInput étant dans la bibliothèque du document en cours, ajoutez le code suivant sur la première image du scénario principal :
 
// Création d'occurrences TextInput et Button.
this.createClassObject(mx.controls.TextInput, "my_ti", 1, {text:"Hello World"});
this.createClassObject(mx.controls.Button, "my_button", 2, {label:"My Button"});
// Déplacement du bouton sous la saisie de texte.
my_button.move(my_ti.left, Stage.height - my_ti.bottom);
 
// Création d'un objet écouteur pour le clic de bouton.
var buttonListener:Object = new Object();
buttonListener.click = function(evt_obj:Object){
    destroyObject("my_ti" );
}
// Ajout de l'écouteur.
my_button.addEventListener("click", buttonListener);  


source


---------------
D3
n°1314226
bob007
Posté le 27-02-2006 à 12:26:05  profilanswer
 

oui je suis tout a fait d'accord avec ca. Sauf que bah ca marche pas dans mon exemple.
j'ai bien essayé destroyObject("RBtest" );
 
Rien n'y fait.
 
Si j'ai posté ici, c'est bien entendu apres avoir matté la doc, y compris le livedoc, et google ! (alors ton RTFM, bah heu hein ! Bon !)

n°1314233
bob007
Posté le 27-02-2006 à 12:38:17  profilanswer
 

precision: comme ma premiere phrase n'est pas super claire, je m'explique un peu plus.
 
L'exemple marche, il detruit tout a fait le textInput. En revanche, impossible de détruire un RadioButton

n°1314235
mechkurt
Posté le 27-02-2006 à 12:45:20  profilanswer
 

a mon avis (j'ai pas testé car les UI c'est le mal), tu as un PB avec ton instanciation d'objet car pour moi ca c'est un peu le bordel:

Code :
  1. RB11 = RadioButton(_level.createClassObject(RadioButton, "RBtest", _level.getNextHighestDepth()));
  2. RB11.data = "1";
  3. RB11._name = "RB11";
  4. RB11.label = this.r1;
  5. RB11.groupName = this.Qlabel;
  6. RB11.move(30, 130);


par rapport a ca:

Code :
  1. this.createClassObject(mx.controls.RadioButton, "RBtest", this.getNextHighestDepth(), {data:"1", _name:"RB11", label:this.r1, groupName:this.Qlabel, _x:30, _y:130});


 [:airforceone]  
 
après peut etre que:
delete RB11;
_level.destroyObject("RBtest" );  
ou
_level.RBtest.removeMovieClip();
pourront aider...
 
desole si je t'ai vexe mais bon on en voit des vertes et des pas murs...
 
EDIT: sinon tu triche:
 tu fait un RB11.move(hors champs) et puis tu delete RB11 pour liberer la mémoire...


Message édité par mechkurt le 27-02-2006 à 12:47:46

---------------
D3
n°1314237
bob007
Posté le 27-02-2006 à 12:46:39  profilanswer
 

ouais excuse moi je me suis un peu enervé ! :p
Merci de ton aide.
Je vais essayer ta facon d'instancier l'objet, je post le feedback ici des que possible !:)

n°1314243
bob007
Posté le 27-02-2006 à 12:57:52  profilanswer
 

j'ai donc changé l'instanciation d'objet. Cela ne change rien. J'ai essayer:
delete RB11;
_level.destroyObject("RBtest" );
_level.destroyObject(RB11);
_level.destroyObject(RB11._name);
_level.RBtest.removeMovieClip();
 
impossible de le supprimer.
 
Alors j'avais effectivement pensé à faire un move hors champs et un delete, mais je me suis dit que le delete n'aurait aucun effet parce qu'il ne supprime pas effectivement l'objet.
 
Peux tu confirmer s'il te plait qu'un delete libère la mémoire, meme si l'objet est encore visible a l'écran ?
Merci

n°1314289
mechkurt
Posté le 27-02-2006 à 13:44:05  profilanswer
 

je sais pas essaye de faire ca:

Code :
  1. for (prop in RB11) {
  2.   trace(prop+"="+RB11[prop]);
  3. }
  4. delete RB11;
  5. for (prop in RB11) {
  6.   trace(prop+"="+RB11[prop]);
  7. }


et guette le panneau de sortie pour voir si il y a une difference entre avant et apres le delete...


---------------
D3
n°1314424
bob007
Posté le 27-02-2006 à 15:29:43  profilanswer
 

le résultat est identique avant et apres le delete, hélas ....
En tous cas bonne idée le coup du prop je ne connaissais pas ! ;)
Autre chose ?? pliizzz :jap:

n°1314492
bob007
Posté le 27-02-2006 à 16:06:48  profilanswer
 

Okay, le probleme vient de this.getNextHighestDepth();
Sans cette methode, l'objet est détruit correctement.
Il ne faut pas non plus que l'attribut _name soit renseigné !
Bon bah voila !
Merci beaucoup de ton aide, mechkurt.
 
Reste a savoir si c''est un comportement normal ou un bug ....

mood
Publicité
Posté le 27-02-2006 à 16:06:48  profilanswer
 

n°1314721
mechkurt
Posté le 27-02-2006 à 19:24:56  profilanswer
 

effectivement this.getnexthighestdepth() a des comportements douteux je prefere utiliser une variable que j'incremente, c'est apparu avec Player 7 ill me semble mais c'est maintenant (Flash 8) deprecié au profit de la classe depthmanager (que j'utilise pas non plus) ce qui prouve que c'étais bof comme truc...


---------------
D3

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

  detruire un objet instancié par createClassObject()

 

Sujets relatifs
[C++ débutant] Tester si un Objet est d'un type précis ?[vb.net] sérialization d'un objet en xml
Analyse sytaxique orientée objet[JS] Variable dans le nom d'un objet...
Petite question ajout d'objet pendant l'executionVB6 dessiner objet DirectX sous PictureBox
comment detruire la fenetre de log wxWidgetprobleme pour créer objet
comment supprimer un objet que l'on crée[C#] Serializer un objet 'Font'
Plus de sujets relatifs à : detruire un objet instancié par createClassObject()


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