我正在优化游戏,以便当有来电或由于任何其他原因移动到后台时,它应该停止音乐,定时器并正确暂停。
除了由于某种原因音乐不会停止播放这一事实之外,它的效果很好,即使我发出命令让它停止。更奇怪的是,当游戏回到前台时,有两个背景音乐而不是一个。
这是我的一些代码,没有太复杂或不同寻常的事情:
...
NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, handleActivate);
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate);
...
private function handleActivate(event:Event):void
{
stage.frameRate = previousFrameRate;
//if the music was on when the game is moved to the background, then replay it when its moved back to the foreground
if(musicOn)
{
BGMusic.play();
}
}
private function handleDeactivate(event:Event):void
{
BGMusic.stop();
stage.frameRate = 0;
}
值得注意的是,如果当游戏返回到前台时我没有重放音乐(即当我在handleActivate中不使用BGMuusic.play()时),将不会有任何预期的音乐。只有当我停止播放音乐并在以后移动到前景时才恢复它,背景音乐不会停止,我会得到两个播放曲目。
有什么想法吗?正如我所说,其他一切正常,游戏正确暂停。我正在Flash Builder模拟器上测试它,因为我没有必要的证书来直接在iphone上测试它。因此,可能是模拟器本身而不是代码存在问题。
提前致谢
编辑:我用flash和adobe air写这篇文章
答案 0 :(得分:1)
那对我来说是愚蠢的。一切正常,我只是忘了在if语句中添加另一个条件。所以而不是:
if(musicOn)
{
BGMusic.play();
}
应该是
if(musicOn && !BGMusic.isPlaying())
{
BGMusic.play();
}
现在一切正常......我会将musicOn的变量名更改为像musicButtonOn更清晰的东西。
无论如何,谢谢你的帮助。如果您有任何提示或意见,请随时告诉我= D
答案 1 :(得分:0)
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
NSLog(@"Playing stoped");
[player stop];
}