[ascoders] swap To MC

Re: [ascoders] Re: AW: Re: AW: Re: OOP FrageHo,

auf were-here hatte jemand nach einer Methode gefragt, wie man einen attachten 
MC zwischen 2 MC swappen kann...here it comes:


//------------------------------------------------
MovieClip.prototype.swapToMc = function(theMc, theLibraryID, newName, 
daddy_old, newDepth){
 
 var ref;
 ref = this.attachMovie(theLibraryID,newName,newDepth);

 for(var i in daddy_old[theMc]){
  ref[i] = daddy_old[theMc][i];
  }
  
 daddy_old[theMc].removeMovieClip();
 return ref;
}

 ASSetPropFlags(MovieClip.prototype, null, 001, 1);
//------------------------------------------------


Fla gibts da: www.dr3.de/download/forum/swapToMc.zip


Sicher noch nicht perfekt (man könnte ja auch noch attachte Mcs in diesem 
mitkopieren) aber dazu war ich zu faul ;-)

Dabei fiel mir etwas auf:
Normalerweise kann man ja nicht ohne weiteres Arrays/Objects kopieren 
(this.array = dies.array), aber in diesem Falle funktioniert das, es wird also 
keine Referenz erstellt (denn der MC in welchem die Referenz liegen würde wird 
ja removed) stattdessen sind die array wirklich im neuen MC..
Woher kommt das?


BeispielCode:
//------------------------------------------------
_root.createEmptyMovieClip("daddy_1",1)
_root.createEmptyMovieClip("daddy_2",2)


daddy_1.arr = ["a","f","s","x",1,2]
daddy_2.arr = daddy_1.arr;

delete daddy_1.arr
//ebenso
daddy_1.removeMovieClip()

trace (daddy_2.arr[0])
//------------------------------------------------

Flash kopiert anscheinend solche Datentypen komplett wenn eine Referenz 
vorhanden ist....wenn man mal das delete/removeMovieClip weglässt und sich beim 
Testen die Variablen anzeigen lässt, sieht man das es bis dahin nur eine 
Referenz ist...danach nicht mehr...
War das schon immer so, oder hab ich was verpasst...



Manuel 
:I miss Flashforum

Other related posts: