1

我的 chrome 浏览器总是抛出这个错误,是编码和使用tone.js 的新手请任何人帮我检查我的代码,并告诉我是否做错了什么

<--/这是我的app.js文件--/>

function sequencer(){
    const kick = new Tone.Player("./drums/PJ - Divine (Kick).wav").toDestination();
    const snare = new Tone.Player("./drums/PJ - Divine (Kick).wav").toDestination();
    let index = 0;

    Tone.Transport.scheduleRepeat(repeat, "8n");
    Tone.Transport.start();


function repeat(){
    let step = index % 8;
    let kickInputs = document.querySelector(
    `.kick input:nth-child(${step + 1 })`
    );

     let snareInputs = document.querySelector(
    `.snare input:nth-child(${step + 1 })`
    );

     let painoInputs = document.querySelector(
    `.paino input:nth-child(${step + 1 })`
    );
    document.querySelector('kickInput').addEventListener('checked', () => kick.resume());
    document.querySelector('snareInput').addEventListener('checked', () => snare.resume());

    index++;
}
}

 sequencer();
          <--this is my html file--/>

这是 html 文件,我希望在用户选中/单击复选框/框时播放声音,但我得到的是错误:audiocontext 不允许启动,需要创建或恢复。 …………

   <div class="container">
    <div class="starter-template">
     <div class="Drum">  
     <div class="Kick"> 
        <h1>DRUM</h1>
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         </div>
        </div>


       <div class="Snare">  
        <h1>SNARE</h1>
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         <input type="checkbox">
         </div>
4

1 回答 1

0

@Don Muyi,您可能已经想通了,但是您的错误正在出现,因为 Chrome 和(我认为)许多其他网络浏览器不允许您在没有用户明确交互的情况下开始播放声音。

因此,您应该将一个按钮连接到您的 start() 函数,用户必须在您的音序器开始发出声音之前单击该按钮。

于 2019-10-30T08:34:56.560 回答