zufällige Auswahl des nachfolgenden MC

velvetDarkness

Mitglied
hi,
Irgendwie stelle ich mir das einfach vor, aber ich komm nicht auf den richtigen Befehl

Also ich habe angenommen 3 Animationen in jeweils einem MovieClip - die Anfangsbilder und endframes sind jeweils identisch. Man könnte also die Clips in beliebiger Reihenfolge hintereinander schalten ohne das ein Bruch zu erkennen wäre.

Ich lasse also den ersten laufen und sage am Ende dieses ersten er möge doch nach Zufallsprinzip entweder den 2. oder 3. laufen lassen - dieser startet dann und hat am Ende wieder diese Funktion die zu den anderen beiden Clips verweist.

Geht das?

Wenn ja hat jemand den passenden Befehl parat? habe schon alles ausprobiert was mir logisch erscheinen würde, aber leider ist Flash's Logik nicht immer die meine...

Alternativ wäre auch ein Befehl der zu beispielsweise Frame 20 oder 40 verweist denkbar...

Danke (o:
 
Hi,

das sollte gehen. Mit int(Math.random() * clip_anzahl) + 1 erhälst Du eine Zufallszahl zwischen 1 und der Anzahl Deiner Clips. Wenn Du die Clips nummeriert benennst (z.B. clip1, clip2, clip3), kannst Du sie damit ansteuern:
PHP:
// Code im jeweils letzten Schlüsselbild:
var nextclip = int(Math.random() * _root.clip_anzahl) + 1;
eval("_root.clip" + nextclip).gotoAndPlay(2);
stop();
Mag sein, dass ich Dein Anliegen missverstanden habe, aber so oder so ähnlich sollte es gehen.

Gruß

.
 
*lach*

schon wieder du Datic...ich glaub ich bin bin dir bald ein Bier schuldig :)

Also, ich hab deinen string jetzt ohne zu denken einfach kopiert und eingefügt, aber das klappt nicht - muss ich da noch irgendwelche Einstellungen vornehmen?

Ich versteh vorallem die dritte Zeile nicht (die zweite macht für mich irgendwie Sinn)
Warum gotoAndPlay(2) ...frame 2

Erklärs mir bitte...

...Danke
 
Hi,

nun ja, ich habe einfach mal Frame 2 als Startframe angenommen, weil vielleicht im ersten Frame nichts zu sehen ist (ich kenne ja Deine Clips nicht und dachte, vielleicht werden die im ersten und letzten Bild ausgeblendet...). Kannst natürlich auch Frame 1 nehmen. Zum anderen: Wie man unschwer erkennen kann, wird eine Variable "clip_anzahl" benötigt, die auf Root definiert ist (und die Anzahl Deiner Clips enthält). Ist das bei Dir der Fall?

Am besten wäre es, wenn Du Deine Datei einmal posten könntest - ein "BlindEinbau" auf Gut Glück geht nämlich selten gut!

Gruß

.
 
Herrje, bist du auf Zack...

Also ich versuch mich etwas verständlicher auszudrücken.
Ich hab jetzt mein Menü (du erinnerst dich? *g*) und meine Inhalte alle in einer Szene.
Zum aufpeppen möchte ich einige kleine movies machen die in einer Ecke die ganze Szene über läuft. damit es nicht langweilig wird möchte ich eben dass per zufallsprinzip ein Movie das andere ablöst. Gut ich weiss, ich könnte die Movieclips in beliebiger Reihenfolge die gesamte Dauer der Szene in einer Ebene anordnen - aber wenn ich zwishcen den frames hin und her hüpfe werden die Movies mitten drin abgerochen und in dann an der stelle wo ich eben hinhüpfe mitten drin wieder abgespielt (oder?)

Darum wollte ich im ersten Frame meiner Szene den ersten movieclip "ablegen" und die sache sich selbst überlassen - eben mit dieser Funktion.

Angenommen ich habe jetzt 5 Movies mit je zehn Frames. Ist das erste Movie abgespielt soll eines der 5 von vorne (frame 1) abgespielt werden - ist dieser zu Ende wieder einer der 5 von vorne abgespielt und so weiter und so fort.

ich hab jetzt eine ganz einfache datei angehängt die 3 clips enthält (obowhl der erste und der letzte frame jetzt nicht gleich sind - aber egal) und da deine sache reingehaun...
 

Anhänge

  • zufall.zip
    4,5 KB · Aufrufe: 21
Hi,

ich hab das mal folgendermaßen umgebbaut:

- alle drei Clips in einen weiteren Clip gekapselt (jeden auf einer eigenen Ebene)

- jeder der drei Clips ruft im letzten Schlüsselbild die Methode "doplay" des Kapselclips auf, in der ein neuer Clip zum abspielen festgelegt wird, und alle anderen unsichtbar geschaltet.

Gruß

.
 

Anhänge

  • zufallsprinzip.zip
    6,9 KB · Aufrufe: 31
Du liebe zeit - da wär in diesem Jahr nicht mehr von alleine drauf gekommen.

DANKE!

Ich will ja nicht undankbar erscheinen, ich freu mich tierisch dass das jetzt geht aber kannst du mir den code auch erklären?

var current = 1;
...aktuelle variable =1
var count = 3;
...insgesamt gibt es 3 variablen

doplay();
...spielsab (wo ist der unterschied zu play?)

function doplay() {
...sagt was eigentlich gespielt werden soll
var num = int(Math.random() * count) + 1;
...variable ? soll die variablen (in var count mit 3 angegeben) zwischen 1 und 3 zufällig abspielen

und da steig ich jetzt aus...ich versteh was es veranlasst (glaub ich) aber nicht was wofür steht...die "i"s und "+"e...

for (var i=1; i<=count; i++) {
if (i != num) {
eval("clip" + i)._visible = false;
} else {
eval("clip" + i)._visible = true;
eval("clip" + i).gotoAndPlay(1);
}
}
current = num;
}
 
Hi,
PHP:
var current = 1;
// ...aktuelle variable =1 -> genau! Aktueller Clip
var count = 3;
// ...insgesamt gibt es 3 variablen -> stimmt auch: drei Clips!

doplay();
//...spielsab (wo ist der unterschied zu play?)
// ist kein "eingebauter" Befehl, sondern ruft die selbstgeschriebene Funktion (s.u.) auf.

function doplay() {
// Definition der Funktion "doplay" (hätte ich auch randomPlay oder so nennen können)
var num = int(Math.random() * count) + 1;
// num wird hier eine Zufallszahl zwischen 1 und count (also 3)

//und da steig ich jetzt aus...ich versteh was es veranlasst (glaub ich) aber nicht was //wofür steht...die "i"s und "+"e...

// das ist eine Schleife, die alle MovieClips durchläuft
for (var i=1; i<=count; i++) { // von 1 bis Count...
if (i != num) { // wenn ich grad NICHT bei dem Clip bin, der abgespielt werden soll...
eval("clip" + i)._visible = false; // schalte den Clip unsichtbar (eval("clip" + 1) gibt z.B. clip1 zurück
// damit kann ich mit Variablen auf Clipinstanzen zugreifen. eval() ist nicht unbedingt nötig;
// this["clip" + i] würde es wohl auch tun. ;)
} else { // ansonsten (also wenn ich bei der Nummer des abzuspielenden Clips bin):
eval("clip" + i)._visible = true; // Clip sichtbar schalten
eval("clip" + i).gotoAndPlay(1); // und ab dem ersten Frame abspielen
}
}
current = num; // Nummer des aktuellen Films in einer globalen Variable speichern
}

Gruß

.
 
hey T.
du bist echt ein Hit....vielen Dank...jetzt versteh ichs auch...

wenn ich mich mal revanchieren kann - mit Illustrator, Photoshop, Indesign, Quark ...würde mich freuen (o:
 
mit Illustrator, Photoshop, Indesign, Quark ...
ich hoffe, das habe ich nicht falsch zu verstehen (Softwarepakete), sondern richtig (Arbeiten mit besagten Programmen)? Wenn letzteres: danke für das Angebot, komme vielleicht darauf zurück, obwohl ich selbst im Bereich DTP, Layout und Design arbeite. ;)

Gruß

.
 
Zurück