1.7版本用模拟器运行有游戏

  • Creator 版本: 1.7
  • 目标平台: 模拟器
  • 详细报错信息,包含调用堆栈:
  • 重现方式:
  • 之前哪个版本是正常的(可选):1.7之前都可以
  • 编辑器操作系统(可选):win7
  • 编辑器之前是否有其它报错(可选):no

代码实现

谢谢反馈,请整理一个复现demo给我们吧,我们会尽快修复。
你的用例中data是ArrayBuffer么?

对的,是ArrayBuffer
是通过XMLHttpRequest获取的

你把这个ArrayBuffer的数据保留一份,然后整理一个复现demo出来吧。

fileUtis_test.zip (203.8 KB)

你确定1.7之前都可以?

你的xhr.response返回的是ArrayBuffer,它的byteLength为0啊。
writeDataToFile 如果Data为空,会触发异常。

你自己上层调用 writeDataToFile 前检查一下ArrayBuffer的byteLength吧,大于0保存。。。

我1.6.1试了 没问题

1.6.2也没问题

加了长度判断,但是图片是加载不到了

cocos icon 不是显示出来了么。。。

那个是默认赋值的icon,并不是我下载的那个图

下载的图是白色那张

那你得查下你下载的图为什么ArrayBuffer我0字节啊。
你是下载后ArrayBuffer保存为图片,
然后加载图片显示的吧?

同样的demo,用1.7之前的版本下载下来 ArrayBuffer下载下来的东西都不是0字节,
但是用1.7下载下来的就是0字节了
无奈。。。。

大哥,xhr.responseType = “arraybuffer”; 请在new XMLHttpRequest之后就马上设置。
你在响应回调里面去设置干啥。。。。

1.7 以前的版本的实现不合理。
responseType 本来就是应该在onreadystatechange 被回调之前调用的。
已经在响应函数里面了,你再去设置responseType还还能起个啥效果。

https://www.html5rocks.com/zh/tutorials/file/xhr2/

xhr.responseType
在发送请求前,根据您的数据需要,将 xhr.responseType 设置为“text”、“arraybuffer”、“blob”或“document”。请注意,设置(或忽略)xhr.responseType = ‘’ 会默认将响应设为“text”。

在发送请求前

明白了,谢谢大佬