Я пытаюсь сделать таймер, который косвенно синхронизируется с видео. Когда нажимается starttimer
, он должен запускать мой таймер и щекотать каждую секунду.
Вот процесс:
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'
Но мой таймер работает неправильно. Он работает нормально, когда я запускаю таймер, но когда я пересылаю n
секунды, он иногда идет на n
, а иногда на n+1
или n+2
, а когда я перематываю назад на n
, он возвращается сам по себе будет.
Я просто не могу правильно понять логику.
Вызывается при нажатии starttimer
: (Он запускает часы с 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;
}
});
Когда видео пересылается или перематывается: (У меня также есть элемент управления, в котором я мог бы переместить видео вперед на 3 секунды или обратно на 3 секунды, нажав shift + r и shift + l. Надеюсь, что это эквивалентно 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;
});