今天遇到个问题,threejs的FbxLoader加载模型时,如果开启了mock,则无法加载出模型,那就来看看到底是什么鬼

mockjs原理:
在引入了Mock之后,mock.js内部会创建一个MockXMLHttpRequest来替代原生的XMLHttpRequest,如果有原生的XHR请求来,则拦截,替换成MockXMLHttpRequest对象,然后再匹配对应的url,如果没有,就发送网络请求。

FbxLoader是继承自Three.js的FileLoader对象,调用load方法时,会先判断传入的url是否是Base64格式的DataURI,如果是,则进行解析并返回,如果不是,就创建XHR请求。

到底是哪里出问题了呢?
调试到FbxLoader里,发现在load成功后,得到返回值是buffer,需要进行解析,responseType需要是'arrayBuffer'类型!问题来了,在mockjs的MockXMLHTTP中没有把responseType进行设置,而是设置成了空值,所以,无法解析出buffer对象。


田臭脸
29 声望6 粉丝

hello,如果你不小心路过,请留下你的足迹吧~