记录一下新踩的一个坑,使用cocos2dx-3.1.1的时候没有认真去阅读api文档,在需要使用文字的时候随便百度了一下,找到了一个labelttf,于是使用,踩到如下两个坑:
1.获取点击
举一个例子:在一个listener中,我们在判断触摸点是否在精灵上面时,采用的方式为:
it->getBoundingBox().containsPoint(t->getLocation())
其中it为精灵指针,t为listener的touch对象指针,通过这种方式就可以判断点击范围是否在精灵范围内。
但是上述的方法,对于labelttf是不生效的,需要采用如下方法:
it->getBoundingBox().containsPoint(e->getCurrentTarget()->convertToNodeSpace(t->getLocation()))
转换一下坐标,才能生效。当然也有其他方法,我只用过这一种。
2.响应监听
响应监听这个真是一个巨大的,目前我没找到解决方案的坑,也是后面放弃labelttf的主要原因。
我有一个应用场景是在一个layer中有多个labelttf,然后这些响应的listener操作都是一样的,于是我就给这个layer绑定了listener,但是labelttf神奇的没法响应这些操作,测试了一下,只有将listener跟labelttf绑定才能响应操作,甚是疑惑,如果换成这个layer里面的sprite,将listener绑定到layer上面,是可以响应到操作的。
好吧,说了labelttf的两个“坑”,现在就要说一下label了,主要是有一次编译的时候无意注意到了一个warning,说labelttf已经被弃用了,后面在网上查询了一下,说cocos2dx 3.x后都使用label了,于是尝试了一下,对于第一个坑,使用第一种通用方式就可以成功,不用进行恶心的转换,对于第二个坑,将listener绑定到layer上,这个layer里面的所有label都可以响应到操作,很好用,果断使用。哇咔咔!
原文链接:https://www.f2er.com/cocos2dx/345021.html