【未解决】【求大神】wx Downloader没有下载远程res目录中的mp3文件?

首先,配置了wxDownloader.REMOTE_SERVER_ROOT = “自己的服务器地址”;接着,删除整个本地res目录。

然后问题出现了:

wxDownloader没有下载resources目录中的mp3,使用wx.fileSystemManager.access(Object object)方法找了,也打印了downloadRemoteFile方法中的所有url,确实没有。

那我通过本地路径播放的mp3,在微信环境下,就没办法播放了啊。

@jare @panda 求救

如何开启强制下载?

或者加个什么判断让他下载?

你当初第一次怎么下载,现在还怎么下载。
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 好像就是这个资源的地址