やりたいこと
以前解決いたしました下記(「inview.jsを使用して可視範囲に入ったらaudio再生、出たら停止」)のコード ↓ に、
html
1<div class="bgmbox"> 2<audio src="BGM.mp3"></audio>
javascript
1/*可視範囲に入ったらaudio再生、出たら停止*/ 2$(function() { 3$('.bgmbox').on('inview', function(event, isInView) { 4if(event.target !== this){ 5return; 6} 7 var audio = $('audio', this)[0]; 8 if (isInView) { 9 audio.play(); 10 } else { 11 audio.pause(); 12 audio.currentTime = 0; 13 } 14 }); 15})
「audio停止時にフェードアウト」を追加したいです。
また、複数audio要素を使うので、毎回0になったボリュームを次要素再生の度に1に戻したいです。
試したこと
こちらのページを参考に、下記のようなコードを書いてみましたが、audioが再生されなくなりました。
javascript
1/*可視範囲に入ったらaudio再生、出たらフェードアウトして停止*/ 2 3$(function() { 4$('.bgmbox').on('inview', function(event, isInView) { 5if(event.target !== this){ 6return; 7} 8 9 var audio = $('audio', this)[0]; 10 /*ボリュームに関する宣言*/ 11 var media = document.getElementById(".bgmbox"); 12 var vl = media.volume; 13 14 if (isInView) { 15 media.volume = 1 16 audio.play(); 17 18 } else { 19 20 function fadeout() 21{ 22 var vl = media.volume; 23 if (vl > 0) 24 { 25 /*フェードアウトの記述*/ 26 media.volume = Math.floor((vl-0.1)*10)/10; 27 setTimeout("fadeout()",200); 28 29 /*オーディオ停止の記述*/ 30 audio.pause(); 31 audio.currentTime = 0; 32 } 33 }); 34 })
挿入する場所や書き方が間違っていると思うのですが、ご教授いただけますと幸いです。
回答1件
あなたの回答
tips
プレビュー