第三讲 Touch
前面两篇我们学习的内容,足够我们做一款简单的小游戏。也可以说,我们已经入门了,可以蹒跚的走路了。
本篇将讲解cocos2dx中很重要的touch回调机制。你肯定记得第一章做定时器时间的时候用过CC_CALLBACK_1宏定义,它让我们回调一个只有一个形参的函数来执行定时操作。
回调函数的实现(Lambda表达式)
学习本篇前请仔细学习一下C++11的特性,std::function和lambda表达式。C++11还引入了很多boost库的优秀代码,使我们在使用的时候不必再加boost::,比如将要使用的std::bind;
学习地址如下:
简单的说一下function的使用。统一的函数定义格式:function<int(int,float)>。就相当于一种数据类型。只不过int是定义一个整形数,而function是定义一个函数。
function<int(int,float)>func = [](int a ,float b){return a+b;};//定义一个函数,名为func,它的第一个形参是int,第二个形参是float,返回值是int类型。
int ret = func(3, 1.2f);
首先让我们来看一下宏CC_CALLBACK_的定义
// new callbacksbased on C++11
#defineCC_CALLBACK_0(__selector__,__target__, ...)std::bind(&__selector__,__target__, ##__VA_ARGS__)
#defineCC_CALLBACK_1(__selector__,__target__, ...)std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#defineCC_CALLBACK_2(__selector__,__target__, ...)std::bind(&__selector__,__target__, std::placeholders::_1,std::placeholders::_2, ##__VA_ARGS__)
#defineCC_CALLBACK_3(__selector__,__target__, ...)std::bind(&__selector__,__target__, std::placeholders::_1,std::placeholders::_2, std::placeholders::_3, ##__VA_ARGS__)