Ich versuche, einen Timer zu machen, der indirekt mit dem Video synchronisiert. Wenn starttimer
geklickt wird, sollte es meinen Timer starten und jede Sekunde kitzeln. HierWie kann man den Timer jede Sekunde kitzeln lassen und springen lassen, wenn das Video weitergeleitet oder zurückgespult wird?
ist der Prozess:
1. Start the video
2. At a certain time in video, click to start the timer
3. Timer starts from 00:00:00 and should tickle each second.
4. If the video is forwarded by `n` seconds timer should be 'timer+n` seconds. Same for the case, when video is rewinded - `timer-n'
Aber mein Timer, nicht richtig funktioniert. Es funktioniert gut, wenn ich den Timer starte, aber wenn ich durch n
Sekunden vorschlage, geht es manchmal durch n
und manchmal durch n+1
oder n+2
und wenn ich zurückspulen durch n
geht es zurück an seinem eigenen Willen.
Ich kann einfach nicht die Logik richtig bekommen.
aufgerufen, wenn starttimer
geklickt wird: (Es beginnt die Uhr von 00:00:00)
var mtimer = 0;
$('#starttimer').click(function() { // Starts the clock
playing = true;
if(!timerstarted) {
setInterval(function() {
if(playing) {
mtimer++;
$('#starttimer').html(getHHMMSS(mtimer));
}
} , 1000);
timerstarted = true;
}
});
Wenn Video weitergeleitet wird oder zurückgespult: (Ich habe auch eine Steuerung, wobei ich das Video vorwärts bewegen konnte um 3 Sekunden oder zurück um 3 Sekunden mit Shift + r + l und Verschiebung. I hoffen, dass es äquivalent zu seeking
)
var lastCurrentTime = 0;
$('#match').on('seeking',function(event) {
var difference = 0;
var newCurrentTime = $('#match').get(0).currentTime;
if(newCurrentTime > lastCurrentTime) {
difference = newCurrentTime - lastCurrentTime;
playing = false;
mtimer = mtimer + difference;
$('#starttimer').html(getHHMMSS(mtimer));
playing = true;
}else {
difference = lastCurrentTime - newCurrentTime;
playing = false;
mtimer = mtimer - difference;
console.log("Difference : " + difference);
playing = true;
if(mtimer <= 0) {
mtimer = 0;
$('#starttimer').html(getHHMMSS(mtimer));
}
}
lastCurrentTime = newCurrentTime;
});
Sie möchten also das 'timeupdate' Ereignis innerhalb eines 'setInterval's ausgeben? – marekful
Sie müssen Ihre Plus-Minus-Sachen in den Handle/Callbacks der Video-Vorwärts-und Rückwärts-Operation tun. Sonst gibt es keinen besseren Weg als setInterval. –
@sunilsharma Wie wird dieser Effekt? Ich mache es immer noch auf "Suche" -Ereignis –