首先,配置了wxDownloader.REMOTE_SERVER_ROOT = “自己的服务器地址”;接着,删除整个本地res目录。
然后问题出现了:
wxDownloader没有下载resources目录中的mp3,使用wx.fileSystemManager.access(Object object)方法找了,也打印了downloadRemoteFile方法中的所有url,确实没有。
那我通过本地路径播放的mp3,在微信环境下,就没办法播放了啊。
首先,配置了wxDownloader.REMOTE_SERVER_ROOT = “自己的服务器地址”;接着,删除整个本地res目录。
然后问题出现了:
wxDownloader没有下载resources目录中的mp3,使用wx.fileSystemManager.access(Object object)方法找了,也打印了downloadRemoteFile方法中的所有url,确实没有。
那我通过本地路径播放的mp3,在微信环境下,就没办法播放了啊。
如何开启强制下载?
或者加个什么判断让他下载?
你当初第一次怎么下载,现在还怎么下载。
cc.loader.loadres就行。
我不用loader加载,我是直接调用微信的api播放:
let path = cc.url.raw(resources/audio_ingame/${bgmAudio}.mp3);
if(cc.loader.md5Pipe) {
path = cc.loader.md5Pipe.transformURL(path);
}
audio = wx.createInnerAudioContext();
audio.obeyMuteSwitch = true;//如果希望在静音时也能播放声音,可以设置 obeyMuteSwitch 为 false。
audio.src = path;
audio.play();
这里传的path前面加上完整路径试试?
这个path肯定是不对的,因为帖子中也说了,远程的mp3并没有下载的本地。
如果下载了,可以使用:
path = wx.env.USER_DATA_PATH + ‘/’ + path;
解决。
只能用cc.loader加载时才会用到wxdownloader。如果你想自己调用微信的接口放声音,那就要自己调微信的接口去下载文件。或者调cc.loader.loadres去完成下载操作。
自己调用下载到本地我也想过,是个好办法。
能否通过wxdownloader去下载呢?如何用法?
现在暂时使用这个,直接播放远程的mp3路径:
if(CC_WECHATGAME && wxDownloader.REMOTE_SERVER_ROOT) {
path = wxDownloader.REMOTE_SERVER_ROOT + "/"+ path;
}
不过这并不是最好的方式。
其实你完全可以调用 cc.loader.loadres来加载他,加载成功表示文件已经下载成功了。如果你不想让他留着额外占内存,可以使用cc.loader.releaseres把他释放掉,但文件已经下载成功了。再用你自己的方法去播放。
但我不明白的是,为什么你非得自己调用 wx api播放声音,直接用cocos的不行吗。
先加载再释放这个方法pass。。。哈哈
为什么用wx api播放声音,因为论坛有人反馈过cocos播放在微信上体验貌似有bug吧。
那就 wx.downloadFile
cc.loader.loadRes(url,cc.AudioClip,(err,clip)=>{
music.src = clip._audio._src;
}
你试试看这个,clip._audio._src 好像就是这个资源的地址