Einzelnen Beitrag anzeigen
Alt 08-08-2010, 02:27   #74 (permalink)
shin10
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
oha,

langsam langsam.
du kannst einen mc nicht mit delete löschen. mit delete kannst du nur dynamisch generierte eigenschaften löschen. kleines beispiel:
PHP-Code:
import flash.display.MovieClip;

var 
mc:MovieClip = new MovieClip();
mc.name "Dings";
mc.irgendwas "da";
trace(delete mc.name);//false, weil es eine eigenschaft ist, die ein mc immer hat
trace(delete mc.irgendwas);//true, weil es eine dynamisch erstellte eigenschaft ist 
e.currentTarget kannst du also nicht löschen, abgesehen davon ist sind die eigenschaften eines events schreibgeschützt.
delete mc funktioniert auch nicht, weil die variable fest erstellt wurde. du kannst aber mc=null setzen, um den verweis auf den mc zu löschen. (jetzt aber wichtig: weiterlesen!)


nächster punkt:
variablen und instanzen sind absolut nicht das gleiche.
mc ist die variable; new MovieClip() erstellt eine neue instanz der klasse movieclip. durch die variable kannst du auf die instanz zugreifen. eine instanz existiert solange, bis die garbagecollection sie löscht. das passiert erst, wenn KEINE verweise auf die instanz mehr existieren. daher musst du:

-alle eventlistener entfernen. (wenn du das nicht tust, kann es sein, dass die instanz immer weiter im speicher bleibt. denn durch den verweis des listeners wird sie nicht gelöscht, du kannst aber u. u. nicht mehr darauf zugreifen, weil es keine variable mehr gibt, die die instanz für dich greifbar macht)

-die instanz mit removeChild oder ähnlichem aus der displaylist (also von der bühne) nehmen

-alle variablen, die auf die instanz verweisen auf null setzen mc=null;

daher bekommst du auch jedesmal nen anderen namen, weil es eine andere instanz ist. auch, wenn du die selbe variable dafür benutzt.

mfg

sx
__________________

flintfabrik.de

Geändert von shin10 (08-08-2010 um 02:36 Uhr)
shin10 ist offline   Mit Zitat antworten