我正在优化游戏,以便当有来电或由于任何其他原因将其移至后台时,它应该停止音乐、计时器并正确暂停。
它的效果很好,除了由于某种原因音乐不会停止播放,即使我发出了停止的命令。更奇怪的是,当游戏回到前台时,播放的是 2 首背景音乐而不是 1 首。
这是我的一些代码,没有什么太复杂或与众不同的地方:
...
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 Emulator 上对此进行测试,因为我没有必要的证书来直接在 iphone 上对其进行测试。所以也许这是模拟器本身而不是代码的问题。
提前致谢
编辑:我用 flash 和 adobe air 写这个