Avatar billede olf Nybegynder
29. november 2006 - 10:50 Der er 5 kommentarer og
1 løsning

Replay en frame

Okay... Jeg har en file bestående af 6 frames i hovedtidslinien. Hver frame har en række movieclips i sig, som afspilles når man kommer den den respektive frame (duh... det er sådan Flash normalt opfører sig...)

Nu vil jeg så gerne lave en "replay" knap. Eksempel: Står man på frame 3 i hovedtidslinien og har set de mc'ere der kører her, skal man kunne klikke på "replay" knappen og... ja se mc'erne køre igen!

I min naivitet troede jeg at jeg kunne lave en gotoAndPlay(_currentframe) for at løse dette (eller alternativt en gotoAndStop(_currentframe) ) men det kan man bare ikke...

En metode vil naturligvis være at rekursivt gennemløbe alle mine movieclips og sætte dem til gotoAndPlay(1) på den aktuelle frame (samt løbe det enkelte movieclips movieclips igennem for at "nulstille" dem også...) Lidt besværligt, synes jeg. Men findes der nogen anden måde?

/Ole
Avatar billede maqhem Nybegynder
29. november 2006 - 16:50 #1
resetAllMovieClips();
function resetAllMovieClips():Void {
    for(var i:String in (arguments[0] ? arguments[0] : _root)) {
        if(typeof((arguments[0] ? arguments[0] : _root)[i]) == "movieclip") {
            (arguments[0] ? arguments[0] : _root)[i].gotoAndPlay(1);
            resetAllMovieClips((arguments[0] ? arguments[0] : _root)[i]);
        }
    }
}
Avatar billede maqhem Nybegynder
29. november 2006 - 16:54 #2
... Det er i hvert fald den rekursive funktion :)
Avatar billede olf Nybegynder
29. november 2006 - 18:11 #3
Takker maghem... Flot stykke kode. Jeg har selv overvejet det (som skrevet), men kom til at tænke på at jeg også har nogle mc'ere liggende som ikke skal startes lige med det samme....

Har selv tænkt på en (uelegant) løsning som går i retning af dette:

Når der trykkes på replay-knappen, så sættes variablen jumpTo = _currentframe hvorefter jeg hopper til fx frame 1 (hvor min preloader ligger). I frame 1 vil jeg så før jeg aktiverer load af content checke for om jumpTo har en værdi. I så fald skal den bare lave en gotoAndPlay(jumpTo).

På den måde burde jeg sikre mig at alt nulstilles samt at de mc'ere der ikke automatisk skal startes heller ikke starter...

Men lad os bare dele pointene - jeg kan godt se at mit spørgsmål kunne forståes som "hvordan jeg laver denne rekursive løkke".

Put et svar, og få point :-)

Og takker for hjælpen.
Avatar billede maqhem Nybegynder
29. november 2006 - 19:10 #4
Dette er en, for at være ærlig, rigtig dårlig løsning. Jeg vil ikke fortælle dig, hvad du skal gøre, men min kode duer helt fint, hvis du har stop() på første frame i mcs, som ikke selv skal starte, og play() (eller ingenting) på første frame i mcs, som skal starte med det samme. Min kode duer udemærket, og reloader praktisktalt framen.

Så min kode duer også til dit formål :)
Avatar billede maqhem Nybegynder
29. november 2006 - 19:10 #5
Hvis du mener noget andet, så sig frem. Så laver jeg en anden kode :)
Avatar billede olf Nybegynder
30. november 2006 - 07:27 #6
Okay, det lyder rigtigt smart. Har endnu ikke prøvet din kode af, men stoler på dig, så du får pointene :-)
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