Laya:【音效BUG】在游戏失焦后再次返回游戏导致音效播放异常的问题与解决方案

PS:ios 上不支持 ogg格式音频, 全部使用MP3.或者 在只ios不使用ogg。

复现方法:

1.用Laya.SoundManager.playMusic()随意播放一个音效文件

2.在项目内开启Laya.SoundManager.autoStopMusic = true; //通过窗口失焦静音键让音频自动跟随设备静音

3.使游戏失焦:

这时背景音和音效都会暂停,Laya.SoundManager.musicMuted不知道有没有被设置为false,但是关键解决办法在这个值上面;

4.在失焦的前提下用Laya.SoundManager.playMusic()播放另一个背景音乐:

5.返回游戏使游戏再次获得焦点:

游戏音效不再出现,不管怎么放都不会生效。

解决方案:

1.保持 Laya.SoundManager.autoStopMusic = false; 为false:

此处我们自己来管理音效是否因为失焦而自动暂停,监听游戏失焦事件:Laya.stage.on(Laya.Event.BLUR,this,this.method);

在失焦的回调里设置:

Laya.SoundManager.musicMuted = true;

Laya.SoundManager.stopMusic();

将正在播放的音乐路径存为成员变量;

2.监听游戏获取焦点事件:

监听游戏获得焦点事件:Laya.stage.on(Laya.Event.FOCUS,this,this.method);

在获取焦点的事件里设置:

Laya.SoundManager.musicMuted = false;

将之前存好的正在播放的音乐的成员变量用Laya.SoundManager.playMusic(this.playingBGM)继续播放;

3.问题解决

总结:

目前还不知道是不是因为SoundManager内的aotuStopMusic导致的问题,不过可以证明的是如果项目在失焦的状态下并且aotuStopMusic已经被设置过true的前提下,在失焦状态下切换音乐路径后再回到游戏会导致播放音乐方法失效,无论你怎么stopMusic或销毁音效资源都没有用。

相关推荐
二狗哈2 小时前
制作一款打飞机游戏53:子弹样式
游戏
猫头虎-前端技术4 小时前
如何解决鸿蒙应用闪退问题
华为·typescript·npm·node.js·bug·html5·harmonyos
荔枝吻14 小时前
【沉浸式解决问题】System.getProperty(“user.dir“)获取不到项目根目录
java·bug
玉笥寻珍15 小时前
从零开始:用Python语言基础构建宠物养成游戏:从核心知识到完整实战
python·游戏·宠物
顾子茵16 小时前
游戏开发实战(二):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】
python·游戏·设计模式
_WndProc16 小时前
【C++/控制台】简易五子棋游戏
开发语言·c++·游戏
繁依Fanyi1 天前
用 CodeBuddy 搭建「MiniGoal 小目标打卡器」:一次流畅的 UniApp 开发体验
前端·游戏·uni-app·codebuddy首席试玩官
腾讯游戏安全1 天前
腾讯游戏安全与高通合作构建PC端游安全新格局
人工智能·安全·游戏
mit6.8241 天前
[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考
测试用例·bug·测试
喜葵1 天前
前端开发遇到 Bug,怎么办?如何利用 AI 高效解决问题
人工智能·bug