【问题标题】:A-frame: play a random sound on clickA-frame:点击播放随机声音
【发布时间】:2019-05-21 07:37:26
【问题描述】:

我正在使用类似收音机的对象制作场景,并且我想让它在单击时播放我资产中的随机音频文件。这个问题帮助我了解如何添加音频文件Play sound on click in A-Frame 但我无法弄清楚随机方面。 非常感谢。

【问题讨论】:

    标签: audio random aframe


    【解决方案1】:

    你可以有一个声音元素数组

    // use ID's - grab by document.getElementById(audioIds[num])
    var audioIds = ['one', 'two', 'three'] 
    
    // use a class - grab by audioEls[num]
    var audioEls = document.getElementsByClassName('sharedClassName') 
    

    并使用简单的随机数来选择一个项目

    // get a random number between 0 and the number of the elements
    let lastIndex = audioEls.length - 1 // arrays begin at 0.
    var audioEl = audioEls[Math.round(Math.random() * lastIndex)]
    

    然后在click 停止任何播放的声音,并获取一个新的:

    this.el.addEventListener('click', () => {
        if (!playing) {
          audioEl = audio[Math.round(Math.random() * (audio.length - 1))]
          audioEl.play();
        } else {
          audioEl.pause();
          audioEl.currentTime = 0;
        }
        playing = !playing;
    });
    

    您可以在我的fiddle 中查看。

    【讨论】:

    • 非常感谢,Piotr!
    • 亲爱的 Piotr,这个解决方案是否有可能只处理两个音频资产?我已尝试将值调整为我的场景(“(audio.length - 4)”,因为我有五个音频资产),但该组件仅随机播放前两个。抱歉这个菜鸟问题,再次感谢您!
    • @MarcosAlfonzo 对不起,我犯了一个错误,并在随机百分比数上使用了一些 c++ 魔法。应该有 Random * 数字,因为 js Math.random 返回一个介于 [0, 1) 之间的数字。我已将 anwser 和 fiddle 更新为具有 4 个音频元素
    • 非常感谢您继续思考这个问题!
    • @MarcosAlfonzo 没问题,很抱歉这个错误,快乐编码:)
    猜你喜欢
    • 1970-01-01
    • 2018-06-03
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多