2012-11-26 7 views
7

ユーザーが質問に正しく答えると間違った場合は「間違っている」と再生する必要があります。最初に音が鳴っていますが、5回目には正しく答えてから、4回目の "正しい"音を5回目に出力しています。音が聞こえません。音楽はたかだか4回目しか演奏できないようです。 これを引き起こす原因は何でしょうか? * 更新phonegapメディアの音が5回再生を停止する

私は(私のstopAudioでmedia.releaseを追加しました)が、これまでの音が6日のために聞くことができる(改善)それはまだ私の場合スーツではありません。 (同じサウンド効果を必要とする多くの質問)

Js.file

// Audio player 
    var my_media = null; 
    var mediaTimer = null; 

    // Play audio 
    function playAudio(src) { 
     // Create Media object from src 
     my_media = new Media(src, null, soundCB); 
     my_media.play(); 
    } 

    function soundCB(err){ 
     console.log("playAudio():Audio Error: "+err); 
    } 

    // Stop audio 
    // 
    function stopAudio() { 
     if (my_media) { 
      alert("AQA"); 
      my_media.stop(); 
      my_media.release(); 
     } 
     clearInterval(mediaTimer); 
     mediaTimer = null; 
    } 

/////質問一部//////

$("#answer").live('tap', function(event){ 

if(buttonAns==true) { 
    $this= $(this);  
    buttonAns = false; 
var choice = $this.attr("class"); 
if((correctAnsNo == 0 && choice =="answer0")||(correctAnsNo == 1 && choice =="answer1")||(correctAnsNo == 2 && choice =="answer2")){ 

     playAudio('/android_asset/www/audio/fall.mp3'); //falling sound  
     correct = parseInt(correct)+2; 

     playAudio('/android_asset/www/audio/correct.mp3'); //dingdong 
    }else{   
     playAudio('/android_asset/www/audio/wrong1.wav');   
    } 
    if(quesNo < wordsNo){ 
     setTimeout(function() {  
      buttonAns = true;      
      db.transaction(queryQuesDB, errorCB); 
     },1800); 
    }else{ 
     endLevel();   
    } 
} else { 
    event.preventDefault(); 
}  
}); 

答えて

8

のAndroidは、有限量のを持っています音を再生するためのリソース。ファイルを再生するたびに、新しいMediaオブジェクトを作成し続けます。使用していないサウンドをリリースする必要があります。これらのサウンドをそれぞれ複数回再生する必要がある場合は、別々のメディアオブジェクトを作成してそれらのサウンドへの参照を保持することを検討してください。

media.releaseを読んでください。

+0

別個のオブジェクトとはどういう意味ですか?助けてくれてありがとう。 –

+0

3つのvarsを作成します。 1つは秋、正しいと間違っている。 –

6

私は同じ問題を抱えていました。私は:

 if(media){ 
     media.stop(); 
     media.release(); 
    } 
    media = new Media(...); 
5

をした ソリューションはここに私のトリックです:それは再生が終了またはエラーが発生した時に、私はそれをリリースしました。

function playAudio(url) { 
    try { 

     var my_media = new Media(url, 
      // success callback 
      function() { 
       **my_media.release();** 
      }, 
      // error callback 
      function (err) { 
       **my_media.release();** 
      }); 

     // Play audio 
     my_media.play(); 
    } catch (e) { 
     alert(e.message); 
    } 
}