Avatar billede rookieboy Nybegynder
14. oktober 2007 - 13:47 Der er 7 kommentarer

duplicateMovieClip i andet scope

Er det muligt at attache og duplikere movieclips i et andet scope, end i det scope hvor koden eksekveres?

Eksempel:
Lad os antage at jeg lige nu er i _level0 og ønsker at attache og duplikere et movieclip, i et target movieclip, der ligger længere nede i hirakiet, fx. _level0.container_mc.indhold_mc

Har prøvet at rode med det - men desværre uden resultat.
Er dette overhovedet muligt?

Jeg ønsker at gøre dette, så al min kode kan ligge på min main timeline i _level0 - og ikke i 10 forskellige movieclips.
Avatar billede barklund Nybegynder
14. oktober 2007 - 14:36 #1
Hvad har du gjort - for ja, selvfølgelig er det muligt :)
Avatar billede rookieboy Nybegynder
14. oktober 2007 - 20:24 #2
Okay, jeg har lavet dette test setup, som ikke virker.
Følgende kode ligger i _level0 og attach sætningen virker fint.

this.container_mc.attachMovie("test_mc","test_mc",this.getNextHighestDepth());

for (var i=0;i<5;i++){
duplicateMovieClip(this.container_mc.test_mc,"testny"+i+"_mc",this.getNextHighestDepth());
trace(this.container_mc["testny"+i+"_mc"]._name);
} // end for

Mit trace giver:
testny0_mc
undefined
undefined
undefined
undefined

Hvis alt ligger i samme movieclip, så fungerer koden fint, men lige så snart jeg laver kopierer af et test_mc i container_mc fra min maintimeline - så går der ged i den.

Hvad gør jeg galt?
Avatar billede rookieboy Nybegynder
14. oktober 2007 - 20:36 #3
Har forsket lidt videre:

1) Denne kode virker:
this.attachMovie("test_mc","test_mc",this.getNextHighestDepth());
for (var i=0;i<5;i++){
this.test_mc.duplicateMovieClip("testny"+i+"_mc",this.getNextHighestDepth(),{_x:20,_y:20});
trace(this["testny"+i+"_mc"]._x);
} // end for

trace output: (forventet resultat)
20
20
20
20
20

2) Denne kode virker IKKE:
this.container_mc.attachMovie("test_mc","test_mc",this.getNextHighestDepth());
for (var i=0;i<5;i++){
this.container_mc.test_mc.duplicateMovieClip("testny"+i+"_mc",this.getNextHighestDepth(),{_x:20,_y:20});
trace(this.container_mc["testny"+i+"_mc"]._x);
} // end for


trace output: (Dette forstår jeg ikke)
20
undefined
undefined
undefined
undefined

Hvorfor er de sidste 4 mc navne undefined i eksempel nr.2?
Avatar billede rookieboy Nybegynder
14. oktober 2007 - 20:51 #4
Kan dette være et Depth problem?
At jeg måske glemmer at addere 1 til getNextHighestDepth()?
Avatar billede barklund Nybegynder
14. oktober 2007 - 22:38 #5
getNextHighestDepth() virker på et movieclip og returnerer den næste dybde, der er tilgængelig i det movieclip, som den kaldes på. Derfor skal du selvfølgelig kalde den på det movieclip, som du tilføjer nye movieclips til:

duplicateMovieClip(this.container_mc.test_mc,"testny"+i+"_mc",this.container_mc.getNextHighestDepth());

this.getNextHighestDepth() bliver jo ved med at returnere det samme, hvis du ikke tilføjer eller fjerner movieclips direkte på this :)

--
Morten Barklund
Avatar billede rookieboy Nybegynder
15. oktober 2007 - 11:31 #6
Ja - det er jo fuldstændig korrekt set, Barklund.
Man kan da heller ikke snyde dig hva'?

:-)

Smid et svar for points og endnu engang tak for din hjælp.
Avatar billede barklund Nybegynder
15. oktober 2007 - 12:45 #7
:)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester