2017-09-27 1 views
1

Ok Ich versuche, ein Projekt abzuschließen, und das einzige, was mich zurückhält, ist, dass sie den Timer aufrufen, wenn er ein Match-Spiel anklickt. Der Timer startet, wenn die HTML-Datei geladen wird, was nicht das ist, was das Projekt will, und ich habe einige Methoden ausprobiert, aber endet das Einfrieren des Spiels. Ich möchte, dass der Timer beim Anklicken einer Karte gestartet werden kann.Starten des Timers, wenn man die erste Karte des Memory-Spiels anklickt

var open = []; 
var matched = 0; 
var moveCounter = 0; 
var numStars = 3; 
var timer = { 
    seconds: 0, 
    minutes: 0, 
    clearTime: -1 
}; 

//Start timer 
    var startTimer = function() { 
     if (timer.seconds === 59) { 
      timer.minutes++; 
      timer.seconds = 0; 
     } else { 
      timer.seconds++; 
    }; 


    // Ensure that single digit seconds are preceded with a 0 
    var formattedSec = "0"; 
     if (timer.seconds < 10) { 
      formattedSec += timer.seconds 
     } else { 
      formattedSec = String(timer.seconds); 
     } 

     var time = String(timer.minutes) + ":" + formattedSec; 
     $(".timer").text(time); 
    }; 

Dies ist der Code zum Klicken auf eine Karte. Ich habe versucht, einen StartTimer-Code in diese zu integrieren, funktioniert aber nicht.

var onClick = function() { 
    if (isValid($(this))) { 

     if (open.length === 0) { 
      openCard($(this)); 

     } else if (open.length === 1) { 
      openCard($(this)); 
      moveCounter++; 
      updateMoveCounter(); 

      if (checkMatch()) { 
       setTimeout(setMatch, 300); 

      } else { 
       setTimeout(resetOpen, 700); 

      } 
     } 
    } 
}; 

Und diese Klasse Code, den ich für meine HTML-Datei verwenden

<span class="timer">0:00</span> 
+0

Setzen Sie Ihren Code in einen Plotter Codepen oder ähnliches und Sie werden wahrscheinlich viel lukrativere Antworten erhalten. Es fehlt hier ein Kontext, der es schwierig macht zu sagen, was passiert. – rjustin

+0

Hier der vollständige Code in Aktion https://codepen.io/cmanderen/pen/aLWZMb Alles funktioniert gut außer dem Timer. Es wird erwartet, dass der Timer startet, wenn eine Karte angeklickt wird und nicht, wenn die Seite geladen wird. –

Antwort

0

Versuchen Sie folgendes: https://codepen.io/anon/pen/boWQbe

Alles, was Sie war resetTimer() Anruf von der Funktion zu tun benötigt entfernen, die beim Laden der Seite geschieht und Dann überprüfe einfach in der onClick (der Karte), ob der Timer schon gestartet ist. timer.seconds == 0 && timer.minutes == 0.

+0

Das hat funktioniert. Danke für die Hilfe. Ich habe viele Stunden gespeichert und kann mich auf das nächste Projekt konzentrieren. –

+0

@ChadAndersen Wenn Sie mit dieser Antwort zufrieden sind, akzeptieren Sie sie bitte, um anderen in der Zukunft mit einem ähnlichen Problem zu helfen. – rjustin

Verwandte Themen