首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Howler.js结束调用时间更新函数的间隔

如何用Howler.js结束调用时间更新函数的间隔
EN

Stack Overflow用户
提问于 2019-09-22 11:30:15
回答 2查看 236关注 0票数 1

我制作了一个函数UpdateTime(x),它更新一首歌的当前时间和总时间,并在div中写入。

我在onload (Howler.js)上调用这个函数,因此它在加载歌曲时编写0:0/song:time,在onplay (Howler.js)上每50毫秒调用一次,因此它会自动更新我开始播放歌曲的时间。

我的问题是,这将导致一个没完没了的循环和影响性能。

我的问题是:,当歌曲停止播放时,我该如何结束那无尽的循环呢?

如果你们中的任何人有一种更优雅的方法来更新Howler.js的时间,我也会很感激的。

代码语言:javascript
复制
var songname = new Howl({
    src: ['mp3/songname.mp3'],
    onload: function() {
        UpdateTime(songname);
    },
    onplay: function() {
        setInterval(function(){
            UpdateTime(songname);
        },50);
    }/*,
    onend: function() {
        maybe end the interval here?...
    }*/
});

function UpdateTime(x){
    let a = (x.seek()).toFixed();
    let a2 = Math.floor(a / 60);
    let a1 = a - a2 * 60;
    let b = (x.duration()).toFixed();
    let b2 = Math.floor(b / 60);
    let b1 = b - b2 * 60;
    document.getElementById("time").innerHTML=a2+":"+a1+" / "+b2+":"+b1;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-15 21:10:29

代码语言:javascript
复制
var durationUpdater;

var song = new Howl({
    // song is still missing bunch of stuff here, but irrelevant for this issue

    onplay: function() {
        durationUpdater = setInterval(function(){
            UpdateT1();
            console.log(currentsong + ': song-progress updated');
        },500);
    },
    onend: function() {
        clearInterval(durationUpdater);
    }
});
票数 0
EN

Stack Overflow用户

发布于 2019-09-24 09:03:38

这是一个bug,但对您的问题的解决办法并不粗暴:

在这里,将一个字符串赋值给b (toFixed()返回一个字符串):

代码语言:javascript
复制
let b = (x.duration()).toFixed();

在这里,你试着把字符串除以60。

代码语言:javascript
复制
let b2 = Math.floor(b / 60);

结果是undefined

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58048773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档