cocos2dx-3.1.1 labelttf与label

记录一下新踩的一个坑,使用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都可以响应到操作,很好用,果断使用。哇咔咔!

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...