今天在开发一款游戏的时候遇到这个报错,在这个问题上花费了比较多的时间。
原文连接:http://www.bennyxu.com/index.php/archives/402/
问题定位
起初开始怀疑是因为连接名是中文的原因。所以,就开始了漫长的替换过程,但是替换的时候总觉得不太对。找到其他的也是带有中文连接名的项目发现并没有报这个错误。
项目分析
项目是包括加载器和游戏两个模块的,而加载器是一个类似的共用模块,应该不是这个的问题。那问题的重点就集中在了游戏模块上,通过排除法也没有找到问题的原因。
报错分析
VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.
报错提示是超出了范围,两个模块在单独运行的时候都是没有问题的。只是在两个模块编译在一起的时候会报错。那么就是说两个模块有相同的函数,他们的路径是相同的,但是参数是不同的。对项目结构重新分析,问题找到了。在两个模块中都引用到了tweenlite类库。简单的先禁用掉加载器的tweenlite,ok,不再报错了。
解决方案
找到了问题的原因,接下来就是解决问题了,两个独立的模块是可以都调用tweenlite的,但是要保证两个tweenlite是相同的版本,简单方法就是用同样的类库。
网友评论