gpt4 book ai didi

javascript - 如何使计时器每秒滴答作响并在转发或倒带视频时使其跳转?

转载 作者:技术小花猫 更新时间:2023-10-29 12:43:19 25 4
gpt4 key购买 nike

我正在尝试制作一个与视频间接同步的计时器。当 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+1n+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 秒。我希望它等同于 寻求)

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;

});

最佳答案

  1. 设置偏移量
  2. 使用偏移量来回移动 mtimer
  3. 寻找时清晰的间隔

starttimer 函数:

 $('#starttimer').click(function() { // Starts the clock
playing = true;

if(!timerstarted) {
offset = $('#match').get(0).currentTime;
timerv = setInterval(function() {
var newCurrentTime = $('#match').get(0).currentTime;


if(playing) {
mtimer++;
$('#starttimer').html(getHHMMSS(mtimer));
}

//$('#starttimer').html(getHHMMSS(mtimer));
} , 1000 );
timerstarted = true;
}
});

函数:

$('#match').on('seeking',function(event) {
playing = true;
if(timerstarted) {
clearInterval(timerv);
var newCurrentTime = $('#match').get(0).currentTime;
mtimer = newCurrentTime - offset;
if(mtimer < 0) {
mtimer = 0;
offset = 0;
$('#starttimer').html(getHHMMSS(mtimer));
console.log("playing : " + playing);
}
timerv = setInterval(function() {
if(playing) {
console.log("Inside playing...");
mtimer++;
$('#starttimer').html(getHHMMSS(mtimer));
}
/*if(playing) {
if(timerset === true && $('#timeentered').val() !== '') {
mtimer = $('#timeentered').val();
timerset = false;
}
mtimer++;
}*/
//$('#starttimer').html(getHHMMSS(mtimer));
} , 1000 );
lastCurrentTime = newCurrentTime;
}
});

关于javascript - 如何使计时器每秒滴答作响并在转发或倒带视频时使其跳转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30778723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com