• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage Registrieren, wenn der Nutzer nicht auf die Taste drückt, wenn er soll?

Willibergi

Mitglied
Moin,
ich habe mal wieder ein Problem.
Ich möchte verschiedene Sounds wiedergeben und abfragen, ob und bei welchem Sound der Benutzer auf die Leertaste drückt.
Zuerst einmal:
  • Es sind alle Variablen definiert.
  • Die Funktion randsplice() löscht ein Element aus einem Array und gibt genau das zurück.
  • Das Array sounds[] sieht anfangs so aus: ["q", "q", "q", "q", "q", "m", "m", "m", "w", "w"];
  • Das Objekt speicher enthält richtig, falsch und ausgelassen, die alle den Anfangswert 0 haben.
Hier ist der Code der Funktion, die aufgerufen wird, um einen neuen "zufälligen" Sound abzuspielen:
Code:
function neuerSoundN(){
    if(sounds.length > 0){
        item = sounds.randsplice();
        if(sounds.length == 0){ justGet0 = true }
        var sound = item == "q" ? quak : (item == "m" ? muh : (item == "w" ? wuff : console.error("FEHLER!")));
        sound.play();
        switch(item){
            case "q":
                quakS = true;
                muhS = false;
                wuffS = false;
                break;
            case "m":
                quakS = false;
                muhS = true;
                wuffS = false;
                break;
            case "w":
                quakS = false;
                muhS = false;
                wuffS = true;
                break;
        }
        sound.onended = function(){
            if(!pressed && quakS){
                speicher.ausgelassen++;
            }
            pressed = false;
            if(sounds.length > 0){
                neuerSoundN();
            }else{
                //Daten werden ausgegeben
            }
        }
    }
}
Und hier die Funktion bei einem Tastendruck:
Code:
window.addEventListener('keydown', function(e){
    if(!pushed){
        switch(e.keyCode){
            case 32:
                if(item == "q"){
                    speicher.richtig++;
                    quak.stop();
                    neuerSoundN();
                }else if(item == "m" || item == "w"){
                    speicher.falsch++;
                }
                pressed = true;
                if(justGet0){
                    justGet0 = false;
                }
        }
        pushed = true;
    }
});
Ich habe bei diesem Code ein Problem:
Wenn der Benutzer bei einem Quak-Sound nicht drückt, sollte eigentlich der Zähler für speicher.ausgelassen erhöht werden. Wird er aber nicht. Nie.
Könnt ihr mir sagen, warum?
Danke schon mal!
LG Willibergi
PS:
Wer sich den Code mal in Aktion ansehen möchte, kann das hier tun: http://bit.ly/2287PGz
(Die Codeauszüge sind ganz unten und auch gekennzeichnet durch Kommentare)
 
Werbung:
Zurück
Oben