Sto provando a creare un timer che si sincronizzi indirettamente con il video. Quando si fa clic su starttimer
, dovrebbe iniziare il mio timer e solleticare ogni secondo.Come far solleticare il timer ogni secondo e farlo saltare quando il video viene inoltrato o riavvolto?
Ecco il processo:
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'
Ma il mio timer, non funziona correttamente. Funziona bene, quando avvio il timer, ma quando inoltro per n
secondi, a volte va da n
e talvolta da n+1
o n+2
e quando si riavvolge da n
si torna a proprio piacimento.
Non riesco a ottenere la logica corretta.
Chiamato quando si fa clic starttimer
: (inizia l'orologio da 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;
}
});
Quando il video viene inoltrato o riavvolto: (ho anche un controllo, in cui ho potuto spostare il video in avanti da 3 secondi o indietro di 3 secondi premendo shift + r e shift + l. Spero che sia equivalente a 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;
});
Quindi si desidera emettere l'evento 'timeupdate' da all'interno di un' setInterval'? – marekful
È necessario eseguire le operazioni con il segno di spunta in più nell'handle/callback delle operazioni di avanzamento e retrocessione del video. Altrimenti non esiste il modo migliore, tranne setInterval. –
@sunilsharma come sarà questo effetto? Lo sto ancora facendo nell'evento 'seek' –