今天遇到个问题,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对象。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。