2012-04-04 6 views
1

私はHTML5を使ってモバイルゲームを作っています。ゲームプレイ中に実行されるバックグラウンドミュージックがあり、もう一度別のページに移動すると理想的に停止するはずです...ロジックは古いiPhoneやアンドロイドで適切に動作します。 しかし、iPhone 4とiPadsでは、ブラウザが閉じられるまで、音楽は止まらず、(別のウェブサイトに移動しても)再生を続けます。 もちろん、コードにはHTML5音声:ウェブサイトを離れても音楽が止まらない

music_var.pause()
という機能がありますが、これはアンロードハンドラと同じですが、これはうまく動作していないようです。 ここに何が起こっているかに関するアイデアは?

+0

何がゼロですか?私は配列を意味する?? – Ani

+0

私はmusic_var.src = something.mp3を持っていると言っています...それからmusic_var [0] .pause()...が正しいでしょうか? – Ani

+0

大丈夫です...問題は私が

答えて

0

は、ユーザーがWebページ上にあるかどうかを確認するために、ループを使用してくださいI've posted here

として、解決策を見つけることができました。時間を保存する。

var lastSeen; 
var loop = function(){ 
    lastSeen = Date.now(); 
    setTimeout(loop, 50); 
}; 
loop(); 

var music = document.getElementById('music'); 
music.addEventListener('timeupdate', function(){ 
    if(Date.now() - exports.lastSeen > 100){ 
     this.pause(); 
    } 
}, false); 

これは、おおよそ私のファイルの外観です。 timeupdateイベントは、再生中のオーディオエレメントに対して継続的に発生するため、ループが最後に呼び出されたときにチェックする必要があります。 100ms以上前に呼び出された場合、私は音楽を一時停止します。私がテストしたiPadの魅力のように働いた。

0

audioタグにはさまざまな種類の矛盾がありますが、一部のブラウザでは、(適切にコールバックを発行していない、プレロードしている、または動作していることを追加する)pauseさえありません。

この問題を回避するには、一時停止する前に0volumeパラメータを設定します。

0

iphoneのSafariで音楽を再生しているときに、アプリが終了してもバックグラウンドで音楽が再生されるため、onbeforeunloadを使用して音楽を停止してみてください(バックグラウンドでの音楽の再生方法など)。ホームボタンをダブルタップする場合は、マイナスボタンが表示されるまでSafariアイコンを押したまま、音楽が停止するマイナスをタップします。これは、古いiphoneがおそらくiOS4以上を実行していない(マルチタスクを実行していて、サファリの音楽が実行されていなくてもバックグラウンドで再生できる)ためです。

+0

私はそれを使用しようとしました...しかし、そのdintは動作するようです:( – Ani

関連する問題