[]Laya.SoundManager.playSound()问题,任务不是当前标签停止播放,当任务回到当前标签页,不能恢复播放

/**
* 播放音效。音效可以同时播放多个。
* @param url 声音文件地址。
* @param loops 循环次数,0表示无限循环。
* @param soundClass 使用哪个声音类进行播放,null表示自动选择。
* @param startTime 声音播放起始时间。
* @return SoundChannel对象,通过此对象可以对声音进行控制,以及获取声音信息。
*/
static playSound(url: string, loops?: number, soundClass?: any, startTime?: number) {
return new Promise((resolve, reject) => {
let soundChannel: Laya.SoundChannel = Laya.SoundManager.playSound(url, loops, Laya.Handler.create(this, () => {
resolve(soundChannel);
}), soundClass, startTime);
});
}
我使用Promise封装了一下音效播放,正常使用await播放没啥的问题,可以做同步异步转换,出问题是的使用await 的时候(pc端使用浏览器)播放音效过程中,打开其他标签页,在回来,就发现坏了,音频不会继续播放了,也没有办法返回了resolve,没有办法结束了,,,这个咋搞,我也不知道是不是引擎问题,Tween动画我也使用了Promise封装就没有这个问题
 
 
(自己查了一下)经过和背景音乐对比发现,播放音效,当不在这个标签页,音效暂停播放,背景音乐也是暂停播放,但是当任务范围回到这个标签页(背景音乐可以继续播放,音效不会继续播放),这应该就是我使用Promise没有办法返回的原因了,因此我播放音效没有办法监听到结束了
 
 
问,一下这是一个bug还是故意搞成这样的啊????????????????????????
已邀请:

liwenhua

赞同来自:

在qq群里@Kent 大神给提供了两个方法,
一个方法是::::::霸道点使用Laya.SoundManager.autoStopMusic = false,不管你失去焦点,背景音乐和音效都会播放不会停止,
 另外一个方法是:::::::使用Laya.Event.FOCUS和Laya.Event.BLUR,监听舞台失去焦点和获得焦点事件,让控制获得焦点重新播放,注意,不能直接使用soundchanel进行继续播放,需要使用SoundManager重新获取使url,再次重新开始播放
 

qian

赞同来自:

传一个可以复现的例子
我们测试下 上交引擎部

该问题目前已经被锁定, 无法添加新回复

商务合作
商务合作