很多使用Laya引擎开发微信小游戏的开发者都遇到过“声音异常”的情况,游戏运行后出现各种莫名其妙的问题,比如背景音乐播不出来,音效播放延迟等等,有时这种Bug还很难复现,甚至无法描述其具体情况。这种Bug我把他成为“不可描述的Bug”,是Bug的最高境界,Bug中的战斗机。

遇到这种问题第一步是检查代码逻辑,检查引擎声音API是否使用正常。经过测试发现,在Chrome无法复现问题,那么问题很可能是出在Laya引擎封装微信底层API的代码中。

于是在你面前有2条路,一条是研究引擎代码,看能否找出Bug隐藏在什么地方,这条路往往比较艰难。第二条是使用egret白鹭引擎的声音代码来代替 Laya声音API,绕开这个问题。

作为egret引擎资深开发者的我来说,毫不犹豫的选择了第二条路。

也许你会说,自己是Laya引擎的铁杆,egret也不熟,怎么办?

没关系!我已经封装好了相关代码,按照步骤一一修改就行,5分钟帮你解决这个终极Bug。

1、下载文件,把压缩包里面的2个文件解压到微信项目文件夹下

https://download.csdn.net/download/linguifa/12458822

2、引入文件,在game.js 最后一行加入代码:

require("./laya.sound.min.js");

3、修改项目ts代码,找到你调用Laya播放声音的代码的位置,按如下方式修改:
//播放网络路径的音乐或音效

window["RES"].getResByUrl(url,(sound)=>{if(sound) {/** play 第1个参数 表示应开始播放的初始位置(以秒为单位),默认值是 0* play 第2个参数 表示播放次数,默认值是 0,循环播放。 大于 0 为播放次数,如 1 为播放 1 次;小于等于 0,为循环播放。* */sound.play(0,1); }
},this)

//如果想控制背景音乐的播放与暂停,修改音量呢? 那就需要保存住声音对象的引用

var soundChannel:any;
window["RES"].getResByUrl(url,(sound)=>{if(sound) {/** play 第1个参数 表示应开始播放的初始位置(以秒为单位),默认值是 0* play 第2个参数 表示播放次数,默认值是 0,循环播放。 大于 0 为播放次数,如 1 为播放 1 次;小于等于 0,为循环播放。* */this.soundChannel = sound.play(0,1); //修改音量 (默认值是1,取值范围0-1)this.currentChannel.volume = 0.5;//停止播放setTimeout(()=>{this.currentChannel.stop();}, 5000);}
},this)

注意,以上代码需要用到 window[“RES”],也就是在game.js里面引入的js里面的对象。本地开发的时候是没有 window[“RES”]对象的,因此需要加个判断:

if(window["RES"]){//使用egret RES方式播放音乐
}
else{//仍然使用Laya api 播放音乐
}

至此,Bug已修复完,发布到微信上测试,声音异常问题不再出现。老板对你刮目相看,升职加薪发股票,迎娶白富美,走上人生巅峰!

微信小游戏Laya引擎声音Bug的解决方案相关推荐

  1. layaair发布html5,全面了解H5微信小游戏 LayaAir引擎支持一键发布

    12月28日,微信小游戏在6.6.1的版本中上线.通过微信小程序入口的微信小游戏平台,可以看到首批推出的15款游戏产品,其中4款采用LayaAir引擎开发,通过Layabox提供的小程序适配库一键发布 ...

  2. 微信小游戏html5教程,微信小游戏白鹭引擎插件使用教程

    为了更好的提升微信小游戏的打开速度,提高用户体验,微信正式发布了引擎插件功能,白鹭引擎第一时间支持并正式发布支持该功能的5.2.31版本.以下是白鹭引擎插件使用的详细说明文档及常见问题解答,请诸位开发 ...

  3. 微信小游戏开发接入系列文章

    教你"偷偷"的获取微信小游戏好友关系链数据 3D游戏3D素材资源zip压缩解决方案 微信小游戏代码包侵权的避开技巧(含处理脚本代码) 微信小游戏 获取判群ID方法 微信小游戏(字节 ...

  4. LayaAirIDE实现微信小游戏排行榜绘制(开放数据域)

    看这篇文章的前提是你 1.已经在微信Web开发者平台里使用wx.setUserCloudStorage接口把自己的数据存储到微信提供的服务器上, 2.并且已经通过wx.getFriendCloudSt ...

  5. 微信小游戏_China_Fighting——后记

    目录 微信小游戏_China_Fighting--前言 微信小游戏_China_Fighting--基础支撑类(sprite.animation.pool) 微信小游戏_China_Fighting- ...

  6. 基于Laya游戏引擎实现微信小游戏排行榜

    我们都知道,微信小游戏和小程序目前风头十足,很多公司都逐渐增加了相关业务线来迅速推广自己的产品和抢占用户群.说到微信小游戏,就不得不提到排行榜这个功能,就目前游戏行业,似乎都离不开排行榜这个重要功能, ...

  7. 使用Laya引擎开发微信小游戏(下)

    本文由云+社区发表 6. 动画 6.1 创建伞兵对象 在src目录下创建一个新目录role,用来存放游戏中角色. 在role里创建一个伞兵Soldier.ts对象文件. module role{exp ...

  8. 微信小游戏分包资源要放服务器吗,微信小游戏的分包(Laya引擎)

    2020年8月15为止,微信小游戏的代码包总大小规定是最大16M,每个包不超过4M.未来随着5G的普及是否会扩大容量不得而知,但是16M一个小游戏基本也够用,再加上云资源的加载,实际游戏体积还能变得更 ...

  9. 全面了解H5重要入口“微信小游戏”,LayaAir引擎支持一键发布!

    12月28日,微信小游戏在6.6.1的版本中上线.通过微信小程序入口的微信小游戏平台,可以看到首批推出的15款游戏产品,其中4款采用LayaAir引擎开发,通过Layabox提供的小程序适配库一键发布 ...

  10. 新手入门:如何用Laya开发微信小游戏?

    1.环境准备 1.1 LayaAirIDE 1.7.14版本才开始集成微信小游戏开发. 1.2 微信小游戏开发工具 微信小游戏开发工具是小游戏开发与测试的环境,由于LayaAir引擎的开发者完全可以使 ...

最新文章

  1. R语言dplyr包mutate_at函数通过名称修改指定数据列的内容(使用统一的函数)实战
  2. 超市账单管理------之获取总记录数
  3. SpringMVC jpa
  4. 【loj#6220】sum
  5. 使用命令行加载 jMeter 自定义配置文件里的自定义 property
  6. UCLA博士带入门:室内场景下智能机器人的环境感知及定位
  7. 为什么没有看到webcontent_环卫工人工资低工作辛苦,为什么还有那么多人愿意做呢?...
  8. 华为云GaussDB(for openGauss)推出重磅内核新特性
  9. PyTorch 1.0 中文文档:数据类型信息
  10. 任务提醒功能怎么实现
  11. ubuntu gedit 工具菜单下没有 Manage external tools
  12. 软件智能:aaas系统中AI众生的“世”和“界” 之11 认知水平的假想supposition
  13. 03. Excel_公式
  14. rsync与cwRsync
  15. python中的defined什么意思_我的python怎么又not defined
  16. ABS系统类最新发表的论文趋势怎么看?
  17. python自动拼图_一种更高效的M*N拼图自动还原算法解析
  18. Mac 电脑添加代理服务器
  19. 加密IC卡保险柜控制器的设计
  20. case/casez/casex 的区分与使用

热门文章

  1. linux7如何改ssid,ssid怎么设置,教您网络ssid怎么设置
  2. PHP域名whois查询代码(数据源万网、新网)
  3. 企业怎样优化用户体验?F5给出三条专业建议
  4. android9 coloros6版本,OPPO A9系统升级更新ColorOS 6 正式版-A.19固件完整包
  5. RESTful理解与实践
  6. 软件测试工程师...我是如何正确地申请加薪的!
  7. 【小技巧】2345——今日热点弹窗广告(未完成)
  8. 关于arctanx的麦克劳林展开式推导
  9. PHP管理虚拟机,用phpvirtualbox管理vbox虚拟机
  10. Filter 过滤器使用