#define ADD_Heartbeat(func, seq, dt, obj) do \
{
auto sd = SeqData::create();
sd->Seq_ = seq;
sd->dt_ = st;
sd->obj_ = obj;
vec##func.push_back(sd);
} while (0)
#define RUN_Heartbeat(classname, func) do \
{ \
schedule(schedule_selector(##classname::##func), 1/40); \
} while (0)
typedef void (Ref::*SEL_CallFunc)();
typedef void (Ref::*SEL_CallFunc)();
typedef void (Ref::*SEL_CallFuncN)(Node*);
typedef void (Ref::*SEL_CallFuncND)(Node*, void*);
typedef void (Ref::*SEL_CallFuncO)(Ref*);
typedef void (Ref::*SEL_MenuHandler)(Ref*);
typedef void (Ref::*SEL_SCHEDULE)(float);
CallFuncN::create(const std::function<void(Node*)> &func)
DECLEAR_Heartbeat(InGameScene,ShowTime);
/*
* [] 中的说明,这个地方是参数的意思
* 1、空。没有使用任何函数对象参数。
* 2、=。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是值传递方式(相当于编译器自动为我们按值传递了所有局部变量)。
* 3、&。函数体内可以使用Lambda所在作用范围内所有可见的局部变量(包括Lambda所在类的this),并且是引用传递方式(相当于编译器自动为我们按引用传递了所有局部变量)。
* 4、this。函数体内可以使用Lambda所在类中的成员变量。
* 5、a。将a按值进行传递。按值进行传递时,函数体内不能修改传递进来的a的拷贝,因为默认情况下函数是const的。要修改传递进来的a的拷贝,可以添加mutable修饰符。
* 6、&a。将a按引用进行传递。
* 7、a, &b。将a按值进行传递,b按引用进行传递。
* 8、=,&a, &b。除a和b按引用进行传递外,其他参数都按值进行传递。
* 9、&, a, b。除a和b按值进行传递外,其他参数都按引用进行传递。
*/
auto _func = CallFuncN::create([this](Node* obj)->void{});
auto seq = Sequence::create(_func,NULL);
ADD_Heartbeat(ShowTime,seq, 0.1, obj);
RUN_Heartbeat(InGameScene, ShowTime);
09-28