序号 | 报错类型 | 错误描述 | 可能原因及解决方法 |
1 | 跨域图片转换错误 | Uncaught Error: #1033: 跨域图片不可以使用toDataURL来转换成base64 | 使用egret.URLLoader()加载方式,并确保OSS设置好跨域。 |
2 | 图集资源加载错误 | 使用Egret sheet图集时报错 | 检查RES.hasRes()函数返回值是否为true,确保资源存在且路径正确。 |
3 | 网络资源加载失败 | 微信开发工具中可以访问网络图片资源,但手机上无法加载 | 在main.ts中加载出movieClip需要使用的json和png文件,并将URLloader更换为ImageLoader方法。 |
4 | Egret引擎加载问题 | 控制台偶尔会报错Uncaught TypeError: this.addChild is not a function | 确保Egret引擎已完全加载后再调用this.addChild方法,可以通过调整代码执行顺序或使用setTimeout延迟执行来解决。 |
FAQs
Q1: 为什么在使用toDataURL
转换跨域图片时会出现错误?
A1: 因为浏览器安全策略限制了跨域图片的直接访问,使用egret.URLLoader
加载图片可以避免这个问题,因为它通过内部的CORS(跨域资源共享)机制来处理跨域请求,确保服务器端也支持CORS,并在响应头中包含正确的AccessControlAllowOrigin
字段。

Q2: 如何检查Egret图集中的资源是否存在?
A2: 可以使用RES.hasRes(resourceName)
方法来检查资源是否存在,这个方法会返回一个布尔值,表示资源是否已经成功加载到内存中,如果返回false
,则需要检查资源路径是否正确,或者资源文件是否丢失。
Q3: 在微信开发工具中可以正常访问网络图片资源,但在手机上却无法加载,这是怎么回事?
A3: 这通常是由于微信开发工具与手机环境之间的差异导致的,特别是对于网络资源的加载,可能需要额外的配置或适配,一种常见的解决方案是确保所有必要的资源(如JSON和PNG文件)都被正确地加载到了项目中,并且没有遗漏任何依赖项,还可以尝试将URLLoader
替换为ImageLoader
,因为后者在某些情况下可能更适合移动设备上的资源加载需求。
