[ 3funovic @ 08.01.2005. 09:53 ] @
Sledeća funkcija:
Code:
createMusicContent = function () {
    var clip = _root.attachMovie("pageMusicContent","page",1000);
    var len1 = menu1xml.firstChild.childNodes.length; if(len1>6) len1 = 6;
    for(var j=0; j<len1; j++) {
        var base1 = menu1xml.firstChild.childNodes[j];
        var len2 = base1.childNodes.length; if(len2>10) len2 = 10;
        for(var i=0; i<len2; i++) {
            var base2 = menu1xml.firstChild.childNodes[j].childNodes[i];
            var it = clip.attachMovie("pageMusicContentItem","it"+i,9000+(j*100)+i);
            it._x = 65 + (112*j); it._y = 300 + (30*i);
            it.ttitle = base2.attributes.albName;
            it.tperformer = base2.attributes.perfName;
            it.tlink = base2.attributes.details;
        }
    }
}


...me je danima izluđivala. Iz unapred parsiranog xml-a je trebala da kreira tabelu gde se svakoj ćeliji (mc-u) dodeljuju tri vrednosti (poslednja tri reda unutrašnje petlje).
no, samo je tlink dobijao korektne vrednosti dok su ttitle i tperformer za svako j (spoljnja petlja) dobijale vrednosti poslednjeg j!
naravno, problem je bio u "sitnom" propustu dupliranja imena instanci pri kreiranju ćelije (mc-a) i to je rešeno:
Code:
var it = clip.attachMovie("pageMusicContentItem","it"+(j*100)+i,9000+(j*100)+i);


Pitanje je zašto je onda dodela za tlink radila korektno?!?!
Nadam se da neko ima strpljenja i znanja da mi ovo objasni... thanks!
[ arsa xx @ 16.01.2005. 00:22 ] @
Cudno je sto nisu radila sva tri nego samo poslednji sa prvim kodom.

Mozda je do pageMusicContentItem-a. Da li si ti pravio taj mc?
[ 3funovic @ 16.01.2005. 09:42 ] @
ne da je čudno nego sam izlizao razum dok sam ulovio šta je u pitanju...

pageMusicContentItem je u test fazi bio jedan frame sa button-om i dva dinamic text polja, znači ništa problematično!

btw, ono što sam primetio jurcajući debuggerom a možda nema veze sa ovim, je da prilikom kreiranja PAGE mc-a, znači na samom početku funkcije, sa pretpostavkom da flash automatski čisti memoriju, nisam proveravao i brisao prethodno postojeći PAGE mc, nego sam ga jednostavno prepisivao novim objektom istog imena i dubine... međutim, u debugger-u sam video da gomila PAGE objekte...

ima li možda ovo ikakve veze sa tim, odnosno, da li je do debugger-a ili ipak mora da se koristi .removeMovieClip pre novog .attachMovie ili .duplicateMovieClip ???
[ arsa xx @ 20.01.2005. 21:11 ] @
Treba da se uradi removeMovieClip ako zelis da kreiras nove mc sa istim imenima.
Npr. ako pozivas gornju funkciju vise puta.

Najbolje je napraviti jednu funkciju za to:

Npr.:

Code:
removeAndAttachMovie(ref, id, name){

  if(ref[name]!=undefined){
    ref[name].removeMovieClip();
  }

  ref.attachMovie(id, name, ref.getNextHighestDepth());

}


Takodje moze i dubina da se prosledi, a default vrednost da bude sledeca po redu.

Takodje kada se zatvoti test prozor gube se sve vrednosti promenljivih i za svako novo testiranje "memorija je prazna".
[ 3funovic @ 21.01.2005. 21:32 ] @
hvala za odgovor, u međuvremenu sam primenio tu taktiku i funkcioniše. ja sam naivno pretpostavio da flash ima pametniji garbage collector koji to sam radi...