Avatar billede rookieboy Nybegynder
29. marts 2007 - 15:36 Der er 11 kommentarer

Funktion med dynamiske navne på Movieclips

Hejsa.

Jeg har lavet en funktion hvor jeg ønsker at tweene en masse movieclips som har forskellige navne.
De hedder MyClip1_mc, MyClip2_mc, MyClip3_mc osv.

Jeg ønsker at gøre følgende logiske slutning, men det virker bare ikke:

-----------------------------------------------------------------
function TweenMe(QuestionNum:Number) {
    MyClip{QuestionNum}_mc.AlphaTo(100,1,"Linear",0)
}
TweenMe(1);
----------------------------------------------------------------

Er det nogle der kan give en hånd?
Avatar billede rookieboy Nybegynder
29. marts 2007 - 15:39 #1
Altså jeg ønsker at indsætte den variabel som jeg sender med funktionen 'TweenMe' og gøre movieclippes navn dynamisk.

På denne måde undgår jeg at gentage en masse kode. Men hvordan gør man når alle movieclips har forskellige instance names?
Avatar billede barklund Nybegynder
29. marts 2007 - 15:53 #2
Man kan ikke selv finde på en syntaks, og så virker den :)

Men man kan bruge eksisterende syntaks:

var base = this;
function TweenMe(QuestionNum:Number) {
    base["MyClip" + QuestionNum + "_mc"].AlphaTo(100,1,"Linear",0)
}
TweenMe(1);

Det vil nok virke :)

--
Morten Barklund
Avatar billede rookieboy Nybegynder
29. marts 2007 - 18:44 #3
Ha! Det virker jo. Så er der point til dig ;-)
Avatar billede rookieboy Nybegynder
29. marts 2007 - 18:49 #4
Hvorfor "base= this;" ?
Avatar billede barklund Nybegynder
29. marts 2007 - 18:58 #5
Hvis nu du kaldte funktionerne på en bestemt måde, så this ikke refererede korrekt - det gør den med ovenstående uanset hvad :)
Avatar billede rookieboy Nybegynder
29. marts 2007 - 19:11 #6
Hmm. Synes ikke jeg kan få sendt mere end ét parameter afsted.
Er det noget galt med denne syntax? Den sidste tween kører ikke når jeg laver den dynamisk:

var base = this;
function SlideIn(Param1:String,Param2:String,Param3:String) {
    // fade in box
    base["q" + Param1 + "_mc"].visible = true;
    base["q" + Param1 + "_mc"].alphaTo(100,_global.FadeInQ,"Linear",0);
   
        // fade in text
    base["q" + Param2 + "_mc.boxq1_mc"].xSlideTo(188,_global.SlideInQBox,"EaseInQuad",_global.SlideInQBoxDelay);
}

SlideIn(1,1,1);
Avatar billede barklund Nybegynder
30. marts 2007 - 10:47 #7
Det skal være:

base["q" + Param2 + "_mc"].boxq1_mc.xSlideTo(188,_global.SlideInQBox,"EaseInQuad",_global.SlideInQBoxDelay);

Kan du se forskellen - også i betydning?
Avatar billede rookieboy Nybegynder
31. marts 2007 - 13:04 #8
Ja, forskellen er at kun det første movieclip-navn bliver genereret dynamisk.
De resterende movieclips i stien bliver hægtet på statisk.

Så fejlen var at jeg forsøgte at lave hele stien dynamisk.

Korrekt?
Avatar billede barklund Nybegynder
01. april 2007 - 10:15 #9
Hvis man har en movieclip-sti som:

mc1.mc2.mc3

Så kan det skrives på enhver af følgende måder:

mc1["mc2].mc3
mc1.mc2["mc3"]
mc1["mc2"]["mc3"]

Men ikke som:

mc1["mc2.mc3"]
["mc1.mc2.mc3"]
mc1.m["c2"].mc3

Eller andre tilsvarende forkerte ting :)

--
Morten Barklund
Avatar billede rookieboy Nybegynder
03. april 2007 - 09:05 #10
Hej Morten - så har jeg også købt din bog.
Så kan jeg måske lære ikke at komme med så mange nybegynder spørgsmål :-)

Vil kigge lidt på den i Påsken.
Avatar billede barklund Nybegynder
03. april 2007 - 09:11 #11
Hehe, helt i orden - der er intet galt i spørgsmål - og husk at man aldrig kan programmere noget "forkert" - man kan kun lave noget, som man sidenhen lærer noget af og laver om næste gang :)
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