多个声音相互重叠 <audio>

Posted

技术标签:

【中文标题】多个声音相互重叠 <audio>【英文标题】:Multiple sounds overlapping each other <audio> 【发布时间】:2014-03-04 01:32:12 【问题描述】:

我正在播放音频文件,但在单击#messageCenter 区域内的任何其他文件后,我需要停止任何其他声音。里面没有 isPlaying 参数有没有容易做到这一点? Stack 中唯一对此的引用是一个游戏插件。

$("#messageCenter area").on( "click", function() 
        var source = "assets/audio/" + $(this).attr('id') + ".wav";
        var audio = $('#audio');
        var sound = new Audio(source);
        sound.play();
);

【问题讨论】:

保留对已播放的其他声音的引用并调用暂停 这个问题:Click Here 可能有用吗? 这仍然会导致多次点击播放其他歌曲。这个音频元素需要一个 isPlaying:Bool 我怀疑。因为我在#messageCenter 区域内有超过 8 个声音。 【参考方案1】:

试试下面的代码(抱歉,我没有测试):

$("#messageCenter area").on( "click", function() 
    var audio = $('#audio'); 
    var lastSound = audio.data('lastSound');
    if (lastSound) lastSound.pause();

    var source = "assets/audio/" + $(this).attr('id') + ".wav";
    var sound = new Audio(source);
    sound.play();

    audio.data('lastSound', sound);
);

【讨论】:

这按预期工作!你能澄清一下 audio.data('lastSound') 在做什么吗

以上是关于多个声音相互重叠 <audio>的主要内容,如果未能解决你的问题,请参考以下文章

使用 Audio Units 播放多个重叠的短音频文件

使用 Windows.Media.Audio 相互叠加播放更多声音文件 UWP

相同的声音重叠使其非常响亮。提示与技巧?

Bootstrap 网格列相互重叠

矩形重叠(矩形相交,dp)

如何检查多个 UIView 子视图相互重叠显示的贝塞尔路径内的触摸事件?