繁体   English   中英

设置间隔播放音频仅循环音频一次?

[英]Set interval play audio only loop audio once?

我有一个设定的时间间隔,并且在设定的时间间隔内,我只需要播放一次声音,但是麻烦的是声音一直循环播放并且不停地播放,有人对我在做什么错有任何想法吗?我试过的:html:

<audio id="swoosh">
  <source src="/resources/music/swoosh.mp3" type="audio/mpeg">
</audio>

js:

    var swoosh = document.getElementById("swoosh");

    setInterval(function () {
        if ($('.c:contains("01")').length > 0) {
            $(".links #abt").attr("href", "about.html");

            swoosh.addEventListener('ended', function () {
                swoosh.pause();
                swoosh.currentTime = 0;
                swoosh.loop = false;
            }, false);
            swoosh.play();

            //
            if ($('.c:contains("02")').length > 0) {
                $(".links #work").attr("href", "work.html");

                swoosh.addEventListener('ended', function () {
                    swoosh.pause();
                    swoosh.currentTime = 0;
                    swoosh.loop = false;
                }, false);
                swoosh.play();
            }
        }
    }, 10);

目的是在class="c"的内容更改时播放声音,因此,如果内容为01,则音频应播放一次,然后暂停或停止,然后在更改为02时,音频应再次播放,然后停止或暂停,等等。提前致谢。

我认为您正在尝试这样做。 存储在变量中的“最后声音”被复制,并且仅在更改后播放新声音。 不需要监听“结束”事件,因为每个更改只播放一次。

var swoosh = document.getElementById("swoosh");
var lastPlay = "00";

setInterval(function () {
    var cValue = $('.c').text();
    if (lastPlay != "01" && cValue.indexOf("01") >= 0) {
        $(".links #abt").attr("href", "about.html");
        swoosh.play();
        lastPlay = "01";
    }
    else if (lastPlay != "02" && cValue.indexOf("02") >= 0) {
        $(".links #work").attr("href", "work.html");
        swoosh.play();
        lastPlay = "02";
    }
}, 10);

另一个更好的方法是向“ .c”元素的change事件添加一个侦听器,它每10毫秒避免一次“ query”。 但是我没有足够的代码向您展示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM