音频精灵只播放某些部分吗?

时间:2018-11-25 10:27:09

标签: javascript html5

我已将音频文件加载到对象的属性中。我将其用作精灵,其中每个部分都指定了开始时间和结束时间。然后,我使用以下代码播放音频文件的特定部分:

speak: function(str) {
        this.vo.currentTime = 0;
        var curr = {};

        curr = this.sprite[str];
        this.vo.currentTime = curr[0];
        this.vo.volume = _data.vol[1];
        this.vo.play();

        var onTimeUpdate = function() {
            if (this.currentTime >= curr[1]) {
                this.pause();
                this.load();
                this.currentTime = 0;
            }
        };

        this.vo.addEventListener('timeupdate', onTimeUpdate, false);
    }

“ vo”是加载为vo = new Audio('..file..')的音频文件 “ str”是属性的名称,其中包含该部分的开始和结束时间。例如:如果我通过aud.speak('hello');,则它将在精灵中显示“你好”的部分。

问题:播放了一个声部之后,其他大多数声部将无法播放。我几乎尝试了所有操作。这就是为什么您也看到.load(), .pause(), .currentTime = 0;的原因。

1 个答案:

答案 0 :(得分:0)

我通过每次调用speak()方法时重新加载音频文件来解决此问题。由于文件是在本地托管的,因此重新加载文件不是问题,但对于使用托管内容的人来说,它可能不是最佳解决方案。

this.vo = new Audio('..file..');

我在speak()方法的开头添加了这一行。