2012-04-04 7 views
1

Ich mache ein mobiles Spiel mit HTML5. Es gibt eine Hintergrundmusik, die während des Spiels läuft und sollte idealerweise aufhören, wenn ich zu einer anderen Seite navigiere ... Die Logik funktioniert auf älteren iPhones und Android richtig. Auf iPhone 4 und iPads hört die Musik jedoch nicht auf und spielt weiter (auch wenn ich zu einer anderen Website navigiere), bis der Browser geschlossen wird. Natürlich gibt es einen Aufruf HTML5 Audio: Musik hört nicht auf, auch wenn ich nicht auf der Website navigiere

music_var.pause()
Funktion im Code sowie die Entlade-Handler ... aber das scheint einfach nicht zu funktionieren. Irgendwelche Ideen, was hier passiert?

+0

wofür ist null? Ich meine die Anordnung ?? – Ani

+0

du meinst zu sagen wenn ich music_var.src = something.mp3 habe ... dann sollte music_var [0] .pause() ... oder? – Ani

+0

okay ... das Problem ist, ich initialisiere das nicht in

Antwort

0

Managed eine Lösung zu finden, wie I've posted here

Verwenden Sie eine Schleife, um zu überprüfen, ob der Benutzer auf der Webseite ist. Speichern Sie die Zeit.

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); 

Das ist grob, wie meine Datei aussieht. Da das timeupdate-Ereignis bei der Wiedergabe ständig auf einem Audioelement ausgelöst wird, muss ich nur überprüfen, wann meine Schleife zuletzt aufgerufen wurde. Wenn es vor mehr als 100ms aufgerufen wurde, pausiere ich die Musik. Arbeitete wie ein Zauber auf dem iPad, das ich getestet habe.

0

Es gibt alle Arten von Diskrepanzen mit dem Tag audio, und einige Browser werden nicht einmal pause wenn gesagt (Hinzufügen, um Callbacks nicht ordnungsgemäß ausstellen, vorladen, oder sogar arbeiten). Um dieses Problem zu umgehen, können Sie den Parameter volume vor dem Pausieren auf 0 setzen.

0

Versuchen Sie, onbeforeunload zu verwenden, um die Musik zu stoppen, denn wenn Safari auf iPhones Musik spielt, wird die Musik auch im Hintergrund weiter abgespielt (so wie Musik im Hintergrund gespielt werden kann). Wenn Sie zweimal auf die Home-Schaltfläche tippen, halten Sie das Safari-Symbol gedrückt, bis eine Minus-Schaltfläche angezeigt wird, und tippen Sie auf das Minus, um die Musik anzuhalten. Dies liegt daran, dass die älteren iPhones wahrscheinlich kein iOS4 oder höher haben (das Multitasking hat und Safari-Musik im Hintergrund abspielen kann, selbst wenn es nicht läuft).

+0

Ich hatte versucht, das zu benutzen ... aber das scheint zu funktionieren :( – Ani

Verwandte Themen