Sprechendes Menue in Java Script

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

Hier mal zu deiner ersten Frage, keyCodes Pfeiltasten:
http://www.mediaevent.de/javascript/Extras-Javascrip…

Zu deiner zweiten Frage, warum war es dir nicht möglich ein Array mehrdimensional zu erstellen, laut Javascript (Selfhtml), ist es kein Problem. (http://de.selfhtml.org/javascript/objekte/array.htm#…)

Du könntest auch jedes Array-Element mit einer ID versehen, sprich die ID des Tags in deiner Navigation und die dementsprechende Wav-Datei laden.

Ich denke das dürfte klappen.

Gruß Sebastian

Hallo

eben so, wie Selfhtml das erstellen Mehrdimensionaler Arrays beschreibt, habe ich es auch versucht. Dies führte dann dazu, dass überhaupt kein Sound mehr gefunden werden konnte. Die embed Elemente dürfen wohl nur im embeds Array stehen, sonst können sie nicht abgespielt werden. Könntest du mir bitte, ambesten an Hand meines Quellcodes, zeigen, wie du das mit der Vergabe einer ID meinst?

Gruß

Tschapajew

Zuerst bist du gefragt, schick mir alle Ressourcen an meine E-Mailadresse (in meinem Namen hinterlegt), alle Sounds etc. bitte.
Auch könntest du beginnen die Navigation in -tags integrieren und dann document.write ausgeben, bitte gib bescheid, falls du probleme hast, ich habe im Moment keine Zeit, dir ein fertiges Script zu basteln, mach die Punkte oben selbstständig und ich implementiere, dann das Array mit Keys, etc.

Gruß Sebastian