请介绍下 cc_callback_ 系列宏的详细用法?

CC_CALLBACK_0(GameLayer::onHeroDead, this, m_pHero);

CC_CALLBACK_0(GameLayer::onHeroAttack, this);

CC_CALLBACK_2(GameLayer::onHeroWalk, this);

CC_CALLBACK_1(LogicTest::bugMe,
this,arg1,arg2,arg3);

请请教上面三个宏的用法区别!!

三个宏代表什么意思? 参数是如果理解的? 按理说 CC_CALLBACK_0 是没有参数的,怎么这里又可以放一个参数呢? CC_CALLBACK_1 怎么可以放三个参数呢? 晕了!!求大牛详细解说下三个宏的用法和区别!!谢谢!!

几天了,都没有大牛回答下吗!! :6:

你可以去看下源码

首先,CC_CALLBACK_0的this不是参数,而是执行这个回调函数的具体对象

然后,这个0也不能理解成多少个参数,而是指的占位符,比如某个回调函数有5个参数,如add(int,int,int,int,int),

然后用CC_CALLBACK_2占上前两个参数,给后面三个参数绑定,可以写成

CC_CALLBACK_2(LogicTest::add, this,15,15,15);

得到的func以后使用的时候直接给前两个参数赋值就ok了,如func(1, 2);

你去了解下 STL 的 std::function 和 std::bind 你就完全明白了。

送你传送门: http://www.cocoachina.com/bbs/read.php?tid=198291&keyword=cc\_CALLBACK :14::14: