vivo小游戏的一些问题

1.音乐无法播放。 _audio.id.volume 的这个错误我已经改掉了。但是音乐就是放不出来。奇怪的是我用vivo的方法 qg.createInnerAudioContext 创建的也播放不出来,volume总是0,改成1,他还是0 。。。

2.网络图片不显示。 不管是直接显示网络图片,还是下载到本地后再用 internal://files/xxx 加载,都不行。 调试了下,发现是cc.loader.load 没有回调。任何回调都没有。 但是偶尔又能成功一次。 可就只会成功一次。。 比如一次有10张图片要加载,只有一个会成功。其他都没有任何回调。

3.有时候cc.loader.loadRes加载资源也不回调,永远收不到回调。

求救。 我是没办法了。

不打md5 所有问题都解决了。。
这。。要怎么搞。
这不打md5不行啊 难道每次更新版本都要把所有本地资源全删除重新下载。

而且不打md5。以后资源上传到服务器上都需要建不同的文件夹啊。不然在上传新版本的时候,老版本就会出问题。这多麻烦啊。

然后我又打上md5再打外包试。 居然问题 2 3又好了。但还是放不出来声音。

日志里有:
####stop
VM12 (no filename):1 ----------音频构造函数------------
VM12 (no filename):1 音频文件的路径为【internal://files/res/raw-assets/fc/fcb80eb2-c066-4c76-a038-e56f809359f0.2ea45.2ea45.mp3】

怎么会后面加2次md5呢。我用createInnerAudioContext创建一个audio,然后使用 internal://files/res/raw-assets/fc/fcb80eb2-c066-4c76-a038-e56f809359f0.2ea45.mp3 这个地址,声音是能放出来的。

加了md5后无法播放声音的问题我找到了。
在jsb-audio.js里 cc.audioEngine.play 这个方法里传进来的clip.url 本身就是已经下载好的文件的完整路径,是带有md5的。
如 internal://files/res/xxxx-xx-xx.xxxx.mp3 这样。
本来直接拿这个地址播放就行了。
可又额外进行了一次 md5Pipe.transformURL 结果就在后面又加了一遍md5. 地址就不对了。

我觉得md5Pipe.transformURL方法需要改进一下,先判断是否已经是md5的地址,避免重复添加。

@huanxinyin 大佬 能否看一下。
我准备临时把 vivo-runtime下的 jsb-audio.js里这个方法改一下,会不会还有别的问题。

我似乎找到load不回调的原因了。
我调用cc.loader.load时传入的是本地绝对路径。 internal://files/imgcache/xxx.png这样
结果引擎里又加了一层 internal://files/ 。 我改成只传后面那一部分就好了。

可问题是 为什么没有失败回调呢。导致里面有些任务一直卡在那里,然后后续加载资源全都不回调。

另外,在微信小游戏上,我也是传的绝对路径,就没有问题。
这不同平台还不一致。很难搞啊。

@huanxinyin

我还发现vivo小游戏 cc.loader.load 的逻辑还和别的不一样。

我在别的平台上,使用 cc.loader.addDownloadHandlers 来添加自己的下载处理器,当需要加载资源时我自己的下载器是会被触发的。但在vivo小游戏上这个是无效的。

碰到跟你一样的问题了,你这一直自问自答啊,没人管啊

可否提供给下测试demo?我们排查下~

勾上MD5就不行了,不加一切正常,我是V2.1.2

这个最后是咋解决的呢,遇到了同样的问题

声音放不了的问题:修改resources/builtin/vivo-runtime/res/jsb-adapter/engine/jsb-audio.js 里的cc.audioEngine.play 方法 。里面有个加md5的部分代码去掉。 就是把md5Pipe.transformURL(path) 这一部分删除就行了

图片下载相关的问题:cc.loader.load不要传入绝对,要传类似 imgcache/xxx.png这样,里面会自动在前面加个 internal://files/这样前缀。 但引擎原来因为这个导致后续的所有load都无法收到回调也不知道是为什么,也不会失败,也不报错。

升级到V1.2.3这些问题好像都没了

问题是这样去修改的话,不会导致其他平台的音频播放出现问题吗

亲测有用,感谢分享!