1

HTML5を使ってモバイルゲームを作っています。ゲームプレイ中に実行されるバックグラウンドミュージックがあり、別のページに移動すると理想的には停止するはずです...ロジックは古いiPhoneとAndroidで正しく機能します。ただし、iPhone 4およびiPadでは、ブラウザが閉じられるまで音楽は停止せず、再生を続けます(別のWebサイトに移動した場合でも)。もちろん電話があります

music_var.pause()
コード内の関数とアンロードハンドラー...しかし、これは単に機能していないようです。ここで何が起こっているかについてのアイデアはありますか?

4

3 に答える 3

0

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

于 2012-04-04T23:21:24.230 に答える
0

タグにはさまざまな種類の不一致がありaudio、一部のブラウザはpause、指示されても表示されません(コールバックを適切に発行しない、プリロードする、または機能しないように追加してください)。

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

于 2012-04-04T22:34:10.207 に答える
0

私がここに投稿したように、なんとか解決策を見つけることができました

ループを利用して、ユーザーがWebページにアクセスしているかどうかを確認します。時間を保存します。

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イベントは、再生中のオーディオ要素で継続的に発生するため、ループが最後に呼び出されたのはいつかを確認するだけで済みます。100ミリ秒以上前に呼び出された場合は、音楽を一時停止します。私がテストしたiPadでチャームのように機能しました。

于 2013-01-21T12:07:27.350 に答える