webForumDet fria alternativet

slumpa ordningen?

11 svar · 605 visningar · startad av kittlos

kittlosMedlem sedan sep. 2002205 inlägg
#1

jag har en flashfil som ska spela upp 4 olika movieclips eftervarandra. Jag villa att ordningen de spelas upp ska slumpas fram. Varje klipp ska spelas en gång.

Hur gör man? Några tips?

AlarMedlem sedan nov. 2004149 inlägg
#2

Döp swf:erna till clip0, clip1, clip2 osv.
Slumpa fram movienr:

movienr = Math.floor(Math.random()*3); //slumpar ett tal 0 till 3
loadMovie("clip"+movienr+".swf", "_root.holder");

Detta enkla script kan tyvärr slumpa fram samma movienr flera gånger i rad. Så om du inte vill att samma clip ska spelas flera gånger i rad måste du lägga in en kontroll, typ:

if(movienr == oldmovienr){
//kör slumpscriptet igen
}

/Alar

kittlosMedlem sedan sep. 2002205 inlägg
#3

en dum fråga, men var ska jag lägga scriptet? och ska jag placera ut de fyra filmerna på scenen? I ett och samma lager?

AlarMedlem sedan nov. 2004149 inlägg
#4

Gör så här:
se till att frame 1 i dina movieclips inte innehåller någon grafik eller ljud. Det enda som ska finnas på frame 1 i varje movieclip är följande lilla script:

stop();

På sista framen i dina movieclips skriver du:

this.gotoAndStop(1);
_root.gotoAndPlay(1);

Placera sedan dina movieclips på olika lager i huvudtidslinjen. Se till att de sträcker sig till och med frame 4. Glöm inte att namnge dina clips i propertiespanelen!
Lägg till ett nytt lager som du döper till scripts.
I detta lager skriver du i frame 1:

movienr = Math.floor(Math.random()*4)+1;//slumpar fram 1, 2, 3, eller 4

Gör en ny keyframe (frame 2) och skriv:

if (movienr == oldmovienr) {
gotoAndPlay(_currentframe-1);//kollar att samma slumptal inte kommer 2 ggr i följd
}

Gör en ny keyframe igen (frame 3) och skriv:

switch (movienr) {
case 1 :
clip1.play();
break;
case 2 :
clip2.play();
break;
case 3 :
clip3.play();
break;
case 4 :
clip4.play();
break;
}
//spelar det slumpade movieclipet

Gör en ny keyframe igen (frame 4) och skriv:

oldmovienr = movienr;//senaste slumptalet lagras i variabeln oldmovienr
stop();
//väntar på att det slumpade movieclipet ska spela färdigt (dina movieclips kan ju vara olika långa)

Ovanstående är kanske inte ett exempel på världens elegantaste programmering - men det funkar. Och det är ju huvudsaken.

/Alar

kittlosMedlem sedan sep. 2002205 inlägg
#5

Som jag förstår det så kommer denna kod att kunna spela upp clip2 flera gånger, dock inte två gånger i följd? Alltså, ordningen skulle kunna slumpas till att bli: clip3 - clip1 - clip3 - clip2.

Jag vill att turordningen ska slumpas, men varje klipp får bara spelas en gång och alla fyra klipp ska spelas.

Hursomhelst får jag det inte att funka. Det händer inget. Trots att jag döpt movieclipen till "clip1", etc. De ligger i varsitt lager som också heter clip1 etc och har en keyframe som varar i 4 frames. Scripten ligger i eget lager, uppdelade på frames enligt instruktionen. Vad kan vara fel?

AlarMedlem sedan nov. 2004149 inlägg
#6

"Vad kan vara fel?"

Tja, säg det... Kolla att du inte stavat fel någonstans. Vilken Player version har du publicerat för? Ska vara Player 6 eller högre. Movieclipen ska sträcka sig från frame 1 till och med frame 4. Kommer inte på något mer som kan vara fel...

Om du vill kan jag maila en fla-fil till dig så att du ser att det funkar.

/Alar

kittlosMedlem sedan sep. 2002205 inlägg
#7

hemskt gärna. Kan du maila mig genom webforum?

kittlosMedlem sedan sep. 2002205 inlägg
#8

Eller om du kan ladda upp filen här, så fler kan se. Man verkar inte kunna ladda filer när man mailar genom webforum...

AlarMedlem sedan nov. 2004149 inlägg
#9

OK, här kommer filen.
/Alar

kittlosMedlem sedan sep. 2002205 inlägg
#10

ok, nu fick jag det att funka! Tack så mycket, och nä'r du ändå är så snäll så tänkta jag be om hjälp att modifiera koden en smula. Jag vill nämligen att varje klipp bara skakunna spela en gång, och när alla fyra klipp spelats, ska flashen gå till en url. Är detta görbart utan att börja om från noll?

AlarMedlem sedan nov. 2004149 inlägg
#11

OK! Nu spelas varje mc bara en gång, och när alla spelats så går Flash vidare till en ny frame. Detta att få Flash att lämna loopen var lite knepigt eftersom eftersom loopen var oändlig, så att säga...
Men nu är det alltså fixat.
OBS att jag ändrat lite i nästan alla script - det är nog bäst att du kopierar rubbet. Även de små scripten i movieclipen.
/Alar

AlarMedlem sedan nov. 2004149 inlägg
#12

Glömde visst att attacha filen....
/Alar

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)