Hallo Gemeinde
heute möchte ich ein sprechendes Menü mit Java Script programmieren. Hierzu habe ich mir ein embeds Array gebaut, welches die verschiedenen Wave-Dateien der Menüpunkte enthält. Mittels onkeydown frage ich zunächst ab, welche Taste gerade gedrückt wurde. Zur Zeit navigiert man mit w und s im Menü rauf und runter, wenn mir jemand nebenbei die korrekten namen für die Pfeiltasten hoch und runter sagen könnte, währ das auch schon eine große hilfe. Durch drücken der hoch und runter Tasten wird gesteuert von onkeydown ein Menüzeiger hoch und runter verschoben und genau jene Sounddatei abgespielt, die mit der entsprechenden Position im embeds Array übereinstimmt. Das funktioniert auch so weit ganz gut.
Nun aber zu meinem Problem:
Mein Menü soll dynamisch sein. Dies bedeutet, dass gelegendlich neue Menüelemente dazu kommen oder verschwinden. Leider steht in Java Script aber nur eben dieses embeds Array zur Ablage von Sounds zur verfügung. Wenn ich nun beispielsweise ein Untermenü bauen möchte, funktioniert mein Konzept mit einem Menüzeiger, der das embeds Array durchläuft nicht mehr, weil eben alle Elemente des Arrays soundmäßig ausgegeben werden. Was ich jetzt bräuchte währe eine Möglichkeit, andere Arrays mit Soundelementen zu füllen. Das geht aber nicht, weil dafür bei JS eben nur dieses embeds Array benutzt werden kann. Ich habe auch schon versucht, embeds mehrdimensional zu gestalten, dies führte dann aber dazu, dass überhaupt nichts mehr angesagt wurde.
Hier mal mein Quählcode
// Variable fuer den Menuezeiger
var menuezeiger = 0;
// Definieren eines JavaScript-Arrays mit Multimediaobjekten.
embeds = new Array(
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/gehen.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/kaempfen.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/zaubern.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/nehmen.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/geben.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/inventar.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“,
„<embed type=‚audio/x-midi‘ src=’./sounds/menue/ausruestung.wav’ height=‚0‘ width=‚0‘ autostart=‚false‘></embed>“
);
// Ermitteln des letzten Elementes im menue Array
var letztes = embeds.length-1;
// Änderung des ONKEYDOWN-EVENTS durch eine Funktion, die bestimmte Tasten abfängt.
document.onkeydown = function(e)
{
var key = String.fromCharCode(window.event ? window.event.keyCode : e.which);
if(key == „w“ || key == „W“) {
if (menuezeiger == 0) {
menuezeiger = letztes;
}
else {
menuezeiger = menuezeiger - 1;
}
}
if(key == „s“ || key == „S“) {
if (menuezeiger == letztes) {
menuezeiger = 0;
}
else {
menuezeiger = menuezeiger + 1;
}
}
document.embeds[menuezeiger].play();
}
test
// Schreiben des vorher erstellten Arrays mit Mediaobjekten ins Dokument.
document.write(embeds);
document.write(menuezeiger);
Für jede Hilfe währ ich echt dankbar.
Lieben Gruß
Tschapajew