Zufallsreihenfolge

Hexle

Grünschnabel
Hallo Zusammen,

wieder einmal steh ich total auf dem Schlauch. Ich sollte eine multible choice Übung erstellen, was auch garnicht so schwer gewesen ist. Nun soll es aber so sein, dass die entsprechenden Städte in einer Zufallsreihenfolge angezeigt werden. Das AS so dachte ich ist i.O, denn keine Fehler sind vorhanden, ABER ES GEHT NET! Wer kann mir sagen was ich falsch gemacht habe oder wer kann mir einen Tip geben, wie es funktuniert?

Vielen Dank schon mal
Code:
//hier die Orte definieren
//hier müssen die Fragen definiert werden
stadt = new Array();
stadt[0] = Array("London",0);
stadt[1] = Array("Hamburg",1);
stadt[2] = Array("Stockholm",0);
stadt[3] = Array("München",1);
stadt[4] = Array("Berlin",1);
stadt[5] = Array("Paris",0);
stadt[6] = Array("Rom",0);
// hier wird der Zeilenabstand definiert 
abstand = 30;
// init - Punkte auf null setzen
punkt = 0;
//Zufallsreihenfolge
zZahl = new Array();
for(i=0; i<stadt.length; i++) {
zZahl.push( { zZahl: Math.round(Math.random()*stadt.length), reihe: i } );
}
zZahl.sortOn("zZahl");
//hier wirden die MCs dupliziert
for(i=0; i<stadt.length; i++){
//trace("i " + i);
duplicateMovieClip("zeile","s"+i,i+1);
//position des neuen MCs
eval("s"+i)._y = eval("s"+i)._y + (i*abstand);
//text wird in den MC eingetragen
eval("s"+i).stadt = stadt[i][0];
}


Die FLA ist mit Flash2004MX erstellt.
 

Anhänge

  • uebung1.zip
    7,5 KB · Aufrufe: 14
Was funktioniert daran nicht? Meiner Meinung nach fehlt da der Zufall! Ich würde es mal so probieren, auch wenn ich "nur" Flash MX hab, nicht MX 2004.

PHP:
//hier die Orte definieren
//hier müssen die Fragen definiert werden
stadt = new Array();
stadt[0] = Array("London",0);
stadt[1] = Array("Hamburg",1);
stadt[2] = Array("Stockholm",0);
stadt[3] = Array("München",1);
stadt[4] = Array("Berlin",1);
stadt[5] = Array("Paris",0);
stadt[6] = Array("Rom",0);
// hier wird der Zeilenabstand definiert 
abstand = 30;
// init - Punkte auf null setzen
punkt = 0;
//Zufallsreihenfolge
zZahl = new Array();
for(i=0; i<stadt.length; i++) {
zZahl.push( { zZahl: Math.round(random(6)*stadt.length), reihe: i } );
}
zZahl.sortOn("zZahl");
//hier wirden die MCs dupliziert
for(i=0; i<stadt.length; i++){
//trace("i " + i);
duplicateMovieClip("zeile","s"+i,i+1);
//position des neuen MCs
eval("s"+i)._y = eval("s"+i)._y + (i*abstand);
//text wird in den MC eingetragen
eval("s"+i).stadt = stadt[i][0];
}

Wie du siehst habe ich die Zufallsabfrage etwas geändert: der Funktion random() musst du nämlich eine Zahl in die Klammer schreiben. Diese Zahl gibt den Höhstwert an - sonst bekommst du sachen wie 980987 und das kann dein AS vohl kaum zur Reihenfolge verwenden.

Mfg
 
Ups- in der Klammer muss es natürlich 7 und nicht 6 heißen, ich vergess immer dass es beim Array mit 0 anfängt - 0-6 = 7
 
Hallo Löffellutscher,

vielen Dank für die super schnelle Antwort, macht auch wirklich Sinn was Du da sagst, hab es auch ausprobiert, aber leider funktuniert das nicht. Beim aufrufen des swfs wird immer die selbe Reihenfolge der Städte angezeigt... Schon merkwürdig, ich habe das script genau so für eine andere Übungsaufgabe hergenommen, und da funktuniert das auch ohne das ich eine Zahl eingegeben habe

Ich versteh wieder mal garnix mehr...:-(

Übrigens, hab ich die Angabe bzgl MX2004 gemacht, da sich ja die Fla welche im zip file ist, sich mit mx nicht öffnen lässt.


Sonniger Gruss aus dem Badnerländle
 
Lösung gefunden...

Also ich hatte da wohl doch etwas bockmist gebaut, aber hab es dann doch noch auf die Reihe bekommen. Das funktunierende script sieht nun so aus


Code:
//hier die Orte definieren 
//hier müssen die Fragen definiert werden 
stadt = new Array(); 
stadt[0] = Array("London",0); 
stadt[1] = Array("Hamburg",1); 
stadt[2] = Array("Stockholm",0); 
stadt[3] = Array("München",1); 
stadt[4] = Array("Berlin",1); 
stadt[5] = Array("Paris",0); 
stadt[6] = Array("Rom",0); 
// hier wird der Zeilenabstand definiert 
abstand = 30; 
// init - Punkte auf null setzen 
punkt = 0; 
//Zufallsreihenfolge 
zZahl = new Array();
for(i=0; i<stadt.length; i++) {
	zZahl.push( { zZahl: Math.round(Math.random()*stadt.length), reihe: i } );
	}
zZahl.sortOn("zZahl");
//hier wirden die MCs dupliziert 
for(i=0; i<stadt.length; i++){ 
//trace("i " + i); 
duplicateMovieClip("zeile","s"+i,i+1); 
//position des neuen MCs 
eval("s"+i)._y = eval("s"+i)._y + (zZahl[i]["reihe"]*abstand);
//text wird in den MC eingetragen 
eval("s"+i).stadt = stadt[i][0]; 
}
//orginalclip wird von Bühne geschossen
zeile._y = -10000;
hatte zwar in der Zufallsreihenfolge die reihe:i als solches angegeben aber in meiner position des neuen MC's hatte ich diese kleine aber feine Referenz nicht reingepackt...aber jetzt gehts übrigens auch ohne das im (Math.random() eine Zahl angegeben wird. Ich wollte das doch so "dynamisch" wie möglich halten, damit wenn man weitere arrays definieren möchte keine weiteren Änderungen im script mehr nötig sind....

So und jetzt ab an den See...;-)
 
Zurück