2016-06-11 4 views
0

関数generateが呼び出されると、サウンドが再生されます。ボタンがトリガーされた場合、サウンドサウンドは停止する必要があります。これを行う最善の方法は何ですか?javascriptオーディオからボタンをクリックして終了する

<script> 

    var audio = new Audio('assets/spin.mp3'); 

     function generate() 
      { 

       /* some code goes here*/ 
       audio.play(); 
      } 

    </script> 

    <button onClick="game.rotationAngle=0; game.draw();generate();audio.stop();">start</button> 

これは、ボタンがトリガーされたときに実行する必要があるリセットです。だからこそ、音を止める必要があります。

私は、デバッグにこのエラーが表示されます。 error

+0

つまり、同じボタンをクリックして開始/停止をトリガーしたいのですか?変数(フラグ)を作成し、その値をクリックで変更します。 – nicael

+0

私がボタンを押すと、デバッガでこのエラーが発生します。http://i.stack.imgur.com/95sEn.png –

答えて

1
  1. あなたは時間目n番目(N + 1)をクリック区別すべきです。これを行うには、オーディオが一時停止しているかどうかを確認してください。
  2. audioを使用すると、<script>タグの外部では無効になります。これは、スクリプトタグで定義するためです。
  3. トラックを開始する場合は、現在の時刻もゼロに設定する必要があります。以下

得られたコードです。

<script> 
    var audio = new Audio('assets/spin.mp3'); 
    function generate() { 
     /* some code goes here*/ 
     if(audio.paused) {audio.currentTime=0;audio.play()} 
        else audio.pause(); 
    } 
</script> 
<button onClick="game.rotationAngle=0; game.draw();generate();">start</button> 
+0

私が使用するスクリプトは、何らかの種類の「幸運」のためのものです。このためには、ボタンを押すたびに最初から再生するサウンドが必要です。私の言っていることが分かるよね? –

+0

@peleあなたはやり直したいと思いますか?編集を確認してください。 – nicael

+0

これは正常に動作しますが、ボタンを2回以上押すと、デバッガでこのエラーが表示されます。 http://puu.sh/pp6fV/972009d73e.png –

2

あなたは何stop方法がないので、代わりにaudio.pause()を使用する場合があります。 Audio.prototype.stopにチェックを入れると、未定義です。

0

audio.stop()としてはそのような機能はありません。 あなたが代わりに使用することができます以下

function generate() { 
    if(!audio.paused) { /* Check if it's not paused */ 
     audio.pause(); /* To pause the audio */ 
     audio.currentTime = 0; /* To reset the time back to 0 */ 
    } 
    else { 
     audio.play(); /* To make it play again */ 
    } 
}; 
0

利用audio.pause()代わりのaudio.stop()

関連する問題