2012-03-07 6 views
1

みんなjqueryで新しいオーディオソースを再生しました

シンプルな音楽プレーヤーを書いていますが、1つ問題があります。私はajaxを使ってファイルphpから新しいソースを取得しても問題ありませんが、どのように新しい曲を演奏するのか分かりません。単純なaudio.play()は機能しません。私はこれが私のコードで修復しよう:

function timer(){ 
    timeleft = $("span#timeleft"); 
    slider = $("div#slider"); 
    $(audio).bind('timeupdate', function(){ 
     var rem = parseInt(audio.duration - audio.currentTime, 10), 
     pos = (audio.currentTime/audio.duration) * 315, 
     mins = Math.floor(rem/60, 10), 
     secs = rem - mins*60; 

     timeleft.text('- ' + mins + ':' + (secs > 9 ? secs : '0' + secs)); 
     slider.css({width: pos + 'px'}); 
    }); 
} 

$(document).ready(function(){ 
    audio = $("audio#audio-player-header").get(0); 

    $("div#controls").click(function(){ 
     $(this).toggleClass("pause"); 
     if(audio.paused){ 
      audio.play(); 
      timer(); 
     }else{ 
      audio.pause(); 
     } 
    }); 

    audio.addEventListener("ended", function(){ 
      $.post("php/player.php", function(result){ 
       audio.src = result; 
      }); 
      audio.play(); // here is the problem 
      timer(); 
    }); 
}); 

そしてHTML:

<div id="player"> 
        <div id="controls" class="play"></div> 
        <div id="music-title"> 
         <div id="slider"> 
          <div id="wrap-music-title"> 
           <p id="music-title">Jamie T - Chaka Demus</p> 
          </div> 
         </div> 
        </div> 
        <span id="timeleft"></span> 
        <div id="player-header"> 
        <audio id="audio-player-header" src="music/rock/Jamie T - Chaka Demus.mp3"> 
        </audio> 
        </div> 
       </div> 

私はstackoverflowのと、ウェブ上でいくつかの解決策を見つけましたが、何もここで働きません。助けを前にありがとう。

答えて

0

ajax呼び出しが返される前に、audio.play()を呼び出す競合条件を作成しました。 (A)オーディオcanplayイベントを聞き、再生をトリガーするか、(B)オーディオタグのautoplay属性を設定するだけです。

オプションA:

audio.addEventListener("ended", function(){ 
    $.post("php/player.php", function(result){ 
     audio.src = result; 
    }); 
}); 

audio.addEventListener("canplay", function(){ 
    audio.play(); 
}); 

オプションB:

<audio autoplay id="audio-player-header" src="music/rock/Jamie T - Chaka Demus.mp3"> 
+0

ブライアン、すぐに答えてくれてありがとう。私は以前の自動再生について考えましたが、最初の曲が終了してもコードに入れようとしましたが、うまくいきません。私はすでにあなたの提案をチェックしていますが、まだプレイヤーは最初の曲の後に停止しています、ここに私のウェブサイトです:http://wovich.net46.net/musicon/おそらく私は怒っているだけです:D – Wovich

+0

2番目のMP3あなたはロードしようとしています( 'http://wovich.net46.net/musicon/music/rap/Lady Leshur Lego.mp3')。そのURLをブラウザで入力してみると、そのファイルは再生されません。私はあなたのページからコードを取り出し、私のサーバー上に置くと、有効なオーディオファイルでsrcを更新するとうまくいきます。 –

+0

1つの有効なソースが、コードの何が間違っているかを考慮して2週間かかったとは思えません。もう一度助けてくれてありがとう、解決はとても近かった。 – Wovich

関連する問題