Próbuję zrobić zegar, który pośrednio synchronizuje się z wideo. Po kliknięciu starttimer
powinien uruchomić mój zegar i łaskotać co sekundę.Jak sprawić, by zegar łaskotał się co sekundę i skakał, gdy wideo jest przekazywane lub przewijane?
Oto proces:
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'
Ale mój zegar nie działa prawidłowo. Działa to dobrze, kiedy uruchamiam timer, ale kiedy przesuwalam o n
sekund, czasami przechodzi on przez n
, a czasami przez n+1
lub n+2
, a kiedy przewijam do tyłu przez n
, cofa się do własnej woli.
Po prostu nie mogę poprawnie odczytać logiki.
Wywoływana gdy starttimer
kliknięciu: (Zaczyna zegara od 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;
}
});
Kiedy film jest przekazywane lub przewijana (Mam też kontrolę, w którym mógłbym przesunąć film do przodu przez 3 sekundy, lub z powrotem od 3 sekund po naciśnięciu przesunięcie + R i przesunięcie + l i. nadzieję, że odpowiada 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;
});
Chcesz emitować zdarzenie 'timeupdate' z poziomu' setInterval'? – marekful
Musisz zrobić swoje plus minus rzeczy w uchwytach/oddzwanianiach wideo do przodu i do tyłu. W przeciwnym razie nie ma najlepszej metody z wyjątkiem setInterval. –
@sunilsharma jak to wpłynie? Wciąż robię to na "szukaniu" zdarzenia –