您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx[3.2](11)——新回调函数std::bind

2015-07-03 15:01 567 查看
【唠叨】

自从3.0引用了C++11标准后,回调函数采用的新的函数适配器:std::function、std::bind。

而曾经的回调函数menu_selector、callfunc_selector、cccontrol_selector等都已经被无情的抛弃了。

取而代之的则是一系列的CC_CALLBACK_*。

【致谢】

http://blog.csdn.net/crayondeng/article/details/18767407

/article/1381671.html

【std::bind】

0、std::bind

请参照上面两篇文章。

1、CC_CALLBACK_*

cocos2dx总共使用了4个std::bind的宏定义,其重点就在于使用了std::bind进行函数适配。

> std::placeholders::_1 :不定参数。不事先指定,而是在调用的时候传入。

> ##__VA_ARGS__ :可变参数列表。

2、变更的回调函数

> 动作函数 :CallFunc/CallFuncN

callfunc_selector / callfuncN_selector / callfuncND_selector

> 菜单项回调:menu_selector

> 触摸事件 :onTouchBegan / onTouchMoved / onTouchEnded

2.1、动作函数CallFunc

可以直接使用CC_CALLBACK_0、CC_CALLBACK_1,也可以直接使用std::bind。

> CallFunc :使用CC_CALLBACK_0。不带任何不定参数。

> CallFuncN:使用CC_CALLBACK_1。需要默认传入不定参数 placeholders::_1,其值为:调用该动作的对象(如sprite->runAction(callfun),那么默认的一个不定参数
_1 为 sprite)。

当然,如果你对于std::bind很熟悉的话,对于CallFunc、CallFuncN回调函数的绑定,也可以全部都使用std::bind。

如下所示:

2.2、菜单项回调menu_selector

使用CC_CALLBACK_1,也可以直接使用std::bind。

2.3、触控事件回调

使用CC_CALLBACK_2。

3、未变更的回调函数

3.1、定时器回调schedule_selector

依旧使用schedule_selector。

3.2、按钮事件回调cccontrol_selector

依旧使用cccontrol_selector。

4、扩展回调函数

在3.x版本中,事件的回调函数可以带任意个自定义的参数啦。

举个栗子:(以菜单项回调函数为例)

请看回调函数callback4。

本文出自 “夏天的风” 博客,请务必保留此出处/article/4603074.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: