简单尝试 Cocos2d-x 中 Lambda 表达式
2015-06-14 11:16
417 查看
最近学习 Cocos2d-x 3.x,在做触摸事件是用到了 Lambda 表达式
另一种写法是[]内加一个 = 号, [=]
[] 表示开始定义一个函数
-> bool 表示返回值, 可不写
网上搜索找到其他一些用法
[&] // 任何被使用到的外部参数皆隐式地以參考方式加以引用。
[=] // 任何被使用到的外部参数皆隐式地以传值方式加以引用。
[&, x] // x以传值方式加以引用。其余参数以參考方式加以引用。
[=, &z] // z以參考方式加以引用。其余参数以传值方式加以引用。
其他还没有试验,简单的说,[=] 时,函数体内可以直接使用本类的参数和方法, 比如
如果不写 = 号,这样会报错。有点类似 Objective-C 里的 GCD。
// 创建一个事件监听器类型为 OneByOne 的单点触摸 touchListen = EventListenerTouchOneByOne::create(); touchListen->onTouchBegan = [](Touch* touch, Event* event) -> bool { return false; }; // 添加监听器, 用完要记得 removeEventListener _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListen, this);
另一种写法是[]内加一个 = 号, [=]
[] 表示开始定义一个函数
-> bool 表示返回值, 可不写
网上搜索找到其他一些用法
[&] // 任何被使用到的外部参数皆隐式地以參考方式加以引用。
[=] // 任何被使用到的外部参数皆隐式地以传值方式加以引用。
[&, x] // x以传值方式加以引用。其余参数以參考方式加以引用。
[=, &z] // z以參考方式加以引用。其余参数以传值方式加以引用。
其他还没有试验,简单的说,[=] 时,函数体内可以直接使用本类的参数和方法, 比如
touchListen->onTouchBegan = [=](Touch* touch, Event* event) -> bool { this->addChild(sprite); return false; };
如果不写 = 号,这样会报错。有点类似 Objective-C 里的 GCD。
相关文章推荐
- cocos2d中的内存管理中的create()方法浅介
- 寒風的cocos2dx之旅之UserDefault用法
- cocos2d-x 3.6版连连看开始界面
- cocos中Widget 的用法
- Cocos2d-x3.5 设计Fly_bird(飞行的小鸟)并打包成APK文件
- 解决cocos2dx在VS2012中文版环境下不支持中文的问题
- cocos studio试用体验
- cocos2dx3.2 ——屏幕适配
- cocos2d纹理像素格式
- cocos2d-x lua table数据存储
- cocos2d-x3.2中将XCode发展project转移到VS2010可能会发生错误
- cocos2d-x 3.6版loading加载资源
- cocos2d-x项目打包成exe文件后的音乐无法播放问题
- 针对cocos2d图片资源自定义加密的解密
- quick-cocos2dx在xcode下如何添加额外的文件夹
- quick-cocos2dx的windows版如何显示标题栏下方的菜单栏
- 将VC++黑白屏蔽图转换为Cocos2dx中可用的png
- cocos2dx2.x使用CCSpriteBatchNode不显示
- cocos2d-x 3.6版连连看加载资源
- cocos node sceen