Zum Inhalt springen
Der Guide für ein smartes Leben.
Mit Flash spielt die Musik

Teil 3: Webdesign mit Flash

Autoren: Redaktion pcmagazin und Frank Puscher • 28.4.2009 • ca. 3:00 Min

Der Button schaltet den angeklickten Clip in den nächsten Frame und den jeweils andere Clip in den ersten Frame, sodass eine Wechselschaltung entsteht. Gleichzeitig wird die Variable selected entweder auf random oder auf top gesetzt. Im TopTen-Clip heißt die Programmierung also:...

Der Button schaltet den angeklickten Clip in den nächsten Frame und den jeweils andere Clip in den ersten Frame, sodass eine Wechselschaltung entsteht. Gleichzeitig wird die Variable selected entweder auf random oder auf top gesetzt. Im TopTen-Clip heißt die Programmierung also:

on (release) {
gotoAndStop(2);
_root.selected="random";
_root.top.gotoAndStop(1);
}

Ein dritter Textbutton liegt ebenfalls in Szene 1 auf der Bühne. Er trägt den Text skip und springt sofort zum nächsten Titel. Die Programmierung ist identisch mit der, die ausgelöst wird, wenn ein Song zu Ende gespielt wurde:

on (release) {
if(_root.selected=="top"){
if(_root.zahl==9){ _root.zahl=0;
}else{_root.zahl=_root.zahl+1; }
}else if(_root.selected=="random"){
_root.zahl=random(10); }
loader.gotoAndPlay(1); }

Packen Sie nun noch zehn Songs mit den Dateinamen track0.mp3 bis track9.mp3 in einen Ordner namens musik.

Im Folgenden werden wir die Skip- und Random-Funktion so verfeinern, dass kein Titel zweimal angespielt wird. Außerdem ermöglichen wir dem User zwischen unterschiedlichen Genres zu wählen.

Intelligente Skip-Funktion

Bislang macht die Skip-Funktion nichts anderes, als die Ordnungszahl für das Laden der MP3-Dateien weiterzuschalten (Top-Ten-Modus) oder mit einer neuen Zufallszahl zu belegen (Random-Modus). Besonders Letzteres ist ungenügend, da es vorkommen kann, dass der Zufallsgenerator die gleiche Zahl zweimal hintereinander auswirft und damit der soeben per Skip abgewählte Song erneut angespielt wird.

Webdesign mit Flash
Der unsichtbare Button ist nur im ersten Frame des Random-Clips vorhanden.
© Archiv

Wir müssen also einen Speicher entwickeln, der uns sagt, ob ein Titel per Skip abgewählt wurde, oder nicht. Folglich laden wir nur Titel, die der User nicht abgewählt hat. Ein solcher Speicher könnte ein Array sein, in dem wir die Ordnungszahl des jeweils gewählten Titels ablegen. Sodann müssen wir beim Laden eines jeden Songs prüfen, ob seine Ordnungszahl bereits im Array enthalten ist oder nicht. Daraus muss entschieden werden, ob der gewählte Titel angespielt wird, oder eine neue Ordnungszahl zu berechnen ist.

Was sich kompliziert anhört, ist in Wahrheit recht einfach. Starten Sie in Szene 1 mit der Initialisierung der neuen Variablen.

zahl=0;
selected="top";
top.gotoAndStop(2);
var nonoArray:Array = new Array("13",
"14", "15", "16", "17");
var dislikes:Number=0;
skip.counter=-1;
stop();

Die Initialisierung des Arrays geschieht durch die Herstellung eines neuen Arrays mit beliebigem Namen. Die Anzahl der Werte entspricht der Menge der Songs pro Ordner. Für dieses Beispiel nehmen wir nur noch fünf. Achten Sie darauf, keine echten Ordnungszahlen zu verwenden. Vermeiden Sie also die Zahlen 0 bis 9.

Die Variable dislikes zählt die Anzahl der Skip-Vorgänge. Wurde Skip fünf Mal gedrückt, ist kein Titel zum Abspielen mehr übrig. Dann springt der Hauptfilm in Frame 2 und gibt dort eine entsprechende Meldung aus. Das ist auch der Grund, warum wir ein stop(); benötigen.

Die Variable skip.counter sagt uns zweierlei. Zum einen wird es einen Movieclip mit dem Instanznamen skip geben, der die Überprüfung des Arrays vornimmt. Zum anderen ist der Counter dazu da, die jeweils nächste Position im Array zu definieren, die mit einem Wert gefüllt werden kann.

Als Nächstes widmen wir uns dem Skip-Button. Die bisherige Berechnung der neuen Ordnungszahl entfällt komplett. Statt dessen steht im Button Folgendes:

on (release) {
_root.dislikes=_root.dislikes+1;
if (_root.dislikes == 5) {
trace("alle weg");
_root.gotoAndStop(2);
}else{
skip.counter=skip.counter+1;
_root.nonoArray[skip.counter] =
eval("_root.zahl");
skip.gotoAndPlay(2); }
}

Zunächst werden die dislikes gezählt. Beim Erreichen des fünften Klicks springt der Hauptfilm in Frame 2.

Solange nicht alle Titel übersprungen wurden, darf der Movieclip skip einen neuen auswählen. Zunächst gehen wir zur nächsten freien Stelle im nonoArray und schreiben dort die aktuelle Ordnungszahl hinein. Sodann startet der Skip-Clip.

Dieser Clip ist ein leerer Movieclip, wie das auch bei der Steuerung der Fall war. Der Instanzname ist skip. Im ersten Frame bleibt der Clip einfach nur stehen: stop(); Im zweiten Frame, der beim Auslösen des Skip-Button angesprungen wird, erfolgt die Prüfung, ob die aktuelle Ordnungszahl bereits im Array enthalten ist und somit übersprungen wird:

for (i=0; i<5;i++){
_root.gehtnicht=_root.nonoArray[i];
if (_root.gehtnicht == eval
("_root.zahl")) { trace("schon weg");
gotoAndPlay(4); }
}