1、attempt to call method ‘xxxx’ (a nil value)
在对一个layer进行触摸事件监听的时候,发现一个问题,判断触控点是不是在某个rect范围内的时候,发现调用原来的那个什么rect:containsPoint(point)方法会报异常attempt to call method ‘containsPoint’ (a nil value),然后我就在网上搜了一下,发现答案各异,后来经过验证有一个答案比较靠谱:原来是tolua生成的接口文件里没开放这个方法接口。去整个项目里面用文件搜索方法搜索了一下containsPoint这个字符串,在cc.lua里面发现了这么一个rectContainsPoint方法,我就终于明白了,确实是原来的方法没了,3.0的把原来containsPoint方法换成了cc:rectContainsPoint(rect, point)方法了
2、attempt to compare nil with number
项目中用到原来的ccp(x,y)方法获得point,运行的时候cocosIDE会提示说该方法已经弃用,换成新的cc.p,注意这里就有一个坑,其实应该是cc:p,当然现在触摸事件监听方法传递参数的过程中有个touch,可以获得location,这个也就是一个point。好了,现在开始说这第二个错误提示如何产生的又如何解决,我在调用1中的cc:rectContainsPoint(rect, point)方法之后,就会提示这么一个信息,本来我也以为是传参进去有空数据,后来把两个参数的属性全部输出仍然没有nil数据输出,所以就这么样,这个接口用不了了,后来就自己建了一个lua文件,里面定义了一个同样的方法,然后用我自定义的方法去替换cc:rectContainsPoint(),成功了。至于为什么会出现cc:rectContainsPoint不能用我也不清楚,如果有大神能够帮我解答一下我会很感激,谢谢。