Zufälliges Abspielen von Labels

tluebke

Mitglied
Hallo,

ich habe eine Flash-Animation gemacht, in der 10 verschiedene Sprüche abwechselnd erscheinen sollen. Vor jeder Spruch-Animation habe ich ein Label (1-15) gesetzt. Nach jeder Spruch-Animation habe ich am Ende eine Abfrage laufen, in der eine Zufallszahl generiert und dann zu dem Label gesprungen werden soll. Das Problem ist, dass es aber nicht klappt.

Habe es mit
Code:
var spruch = random(10)
gotoAndPlay(spruch);

und

Code:
flash = Math.floor(math.random()*10)+1;

probiert. Es scheint zwar zu funktionieren, aber nach einiger Zeit wird die Abfrgae nicht mehr abgerufen (Obwohl an jedem Animationsende eine Abfrage steht). Keine Ahnung warum.

Außerdem scheint es egal zu sein, welche Zahl ich für X bei random(X) eingebe, er springt zufällig zu einer der zehn Labels. Wie kann das funktionieren, wenn er nur random(5) machen soll, aber zum achten Label springt...
 
Hallo,

erstens brauchst du die Label nicht. Und man gibt Label keine Zahlen als Namen. Die Frames haben sowieso Nummern.

Math.random() gibt dir immer einen Wert von 0 bis 1. Du musst Math.random() also mit der Zahl multiplizieren, die du maximal haben willst. (so wie in deinem Zweiten Beispiel)

Des weiteren solltest du zum jeweiligen Frame mit gotoAndStop() springen, sonst spielt er ja ab dem jeweiligen Frame den Film ab.

mfg
 
Ah ok, ich glaube ich habe es verstanden. Dann muss ich nach dem Math.random() eine if-Abfrage für jeden Spruch machen und dann je nach Wert dorthin springen.
Mal schauen, ob ich das so hinbekomme. Dann muss ich ja mit >= arbeiten, oder?
 
Wieso das denn?

var ranNum = Math.ceil( Math.random() * 10 ) -1;

this.gotoAndStop( ranNum );


mfg
 
Dann verstehe ich das aber doch nicht.
also nochmal, falls ich was falsch erklärt habe.
Ich habe 10 verschiedene Ebenen mit den Sprüchen, mit den Befehlen "Fade In" und "fade Out" belegt. Vereinfacht Ebene 1: Frame 1-100; Ebene 2: Frame 101-200; etc...
Wenn man nun also bei Frame 100 ankommt, wird eine Zufallszahl generiert. Nun soll das Flashvideo an folgenden Stellen weitergespielt werden: 1 oder 101 oder 201etc...

Bedeutet das nicht, dass wenn ich die Zahl generiere ich sagen muss, dass wenn die Zahl zwischen 2 und 100 liegt er zu Frame 1 springen soll?
Und dann bräuchte ich doch eh GotoAndPlay() oder versteh ich da was falsch?
Danke für deine Mühe.

Edit: So, habe das zum Test erstmal so gemacht und es klappt so wie ich will. Ist das aber auch programmiertechnisch gut gelöst? Muss ich dann natürlich für jeden Spruch so machen.

Code:
onFrame (1) {
    var ranNum = Math.ceil( Math.random() * 341 -1);

        if(ranNum>=1 && ranNum<=175){
           this.gotoAndPlay( 2 );
        }
        if(ranNum>=176 && ranNum<=340){
           this.gotoAndPlay( 176 );
        }
        if(ranNum>=341 && ranNum<=505){
           this.gotoAndPlay( 341 );
        }
   
}
 
Zuletzt bearbeitet:
Hallo,

jeztzt verstehe ich, was du machen willst.

Also dann würde ich das so machen:

var ranNum = Math.floor ( Math.random() * 10 );

this.gotoAndPlay( ranNum * 100 +1 );


Wenn ranNum = 0 ist, spielt er ab Frame 1 ab, wenn ranNum = 1 ist, spielt er ab Frame 101 ab usw.

Hoffe das hilft dir ;)

mfg
 
Zurück