加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x学习笔记

发布时间:2020-12-14 16:55:53 所属栏目:百科 来源:网络整理
导读:一. lambda表达式 lambda表达式采用引用传值时需要特别小心变量的生命周期,引用在调用lambda函数时变量可能已经被释放了(如局部变量)。尽可能使用传值。计算生命周期时,lambda函数和普通新定义的函数加上selector是没有什么区别的。 二. 回调的几种方法

一. lambda表达式

lambda表达式采用引用传值时需要特别小心变量的生命周期,引用在调用lambda函数时变量可能已经被释放了(如局部变量)。尽可能使用传值。计算生命周期时,lambda函数和普通新定义的函数加上selector是没有什么区别的。

二. 回调的几种方法
参见: http://www.cocoachina.com/bbs/read.php?tid=217556

以schedule为例:

a. this->schedule(SEL_SCHEDULE(&HelloWorld::test),1.0f);
b. this->schedule(schedule_selector(HelloWorld::test),1.0f);
c. this->schedule([](float dt){log("test");},1.0f,"test");

其中SEL_SCHEDULE和schedule_selector是一样的,只差了一个指针的区别,因为源代码中:

typedef void (Ref::*SEL_SCHEDULE)(float);
#define schedule_selector(_SELECTOR) static_cast<cocos2d::SEL_SCHEDULE>(&_SELECTOR)

对应的函数声明:

void Node::schedule(SEL_SCHEDULE selector,float interval)
void Node::schedule(const std::function<void(float)> &callback,float interval,const std::string &key)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读