【发布时间】:2015-08-27 00:38:15
【问题描述】:
我正在尝试制作一个与视频间接同步的计时器。当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;
}
});
当视频快进或快退时:(我也有一个控件,可以通过shift+r和shift+l将视频快进3秒或后退3秒。希望相当于@987654330 @)
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;
});
【问题讨论】:
-
所以您想从
setInterval中发出timeupdate事件? -
您必须在视频前进和后退操作的句柄/回调中做您的加减操作。否则除了 setInterval 没有蚂蚁最好的方法。
-
@sunilsharma 会有什么影响?我还在
seeking活动中这样做 -
那很好,你的两个变量是什么值。新当前时间,最后当前时间??秒还是什么?
-
@sunilsharma 每个都保持秒数。
标签: javascript jquery html timer html5-video