zl程序教程

您现在的位置是:首页 >  其它

当前栏目

Cocos2dx 3.0 过渡篇(十二) lambda表达式的使用

表达式 3.0 lambda 十二 cocos2dx 过渡 使用
2023-09-14 08:57:15 时间
由于Lambda的类型是唯一的,不能通过类型名来显式声明对应的对象,但可以利用auto关键字和类型推导:


                                        CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));  
                        Director::getInstance()- end();//直接在这里添加按钮要调用的代码  
这种写法是不是简洁很多?当然了,也可以将回调 的代码单独取出来,这种写法的好处是可以多出调用callEnd。如下:


默认情况下,即捕获字段为 [] 时,lambda表达式是不能访问任何外部变量的,即表达式的函数体内无法访问当前作用域下的变量。
如果要设定表达式能够访问外部变量,可以在 [] 内写入 或者 = 加上变量名,其中 表示按引用访问,= 表示按值访问,变量之间用逗号分隔,比如 [=factor, total] 表示按值访问变量 factor,而按引用访问 total。
用 引用来举个例子:假设点击按钮后,我要创建一个精灵。修改callEnd:


上面的例子都只是简单的应用。在cocos2dx用到lambda 的地方还有很多,例如创建一个监听事件:




auto sprite1 = Sprite::create();   auto listener1 = EventListenerTouchOneByOne::create();   listener1- setSwallowTouches(true);   listener1- onTouchBegan = [](Touch* touch, Event* event){       auto target = static_cast Sprite* (event- getCurrentTarget());       return false;   listener1- onTouchMoved = [](Touch* touch, Event* event){       auto target = static_cast Sprite* (event- getCurrentTarget());       target- setPosition(target- getPosition() + touch- getDelta());   listener1- onTouchEnded = [=](Touch* touch, Event* event){       auto target = static_cast Sprite* (event- getCurrentTarget());   };                      _eventDispatcher- addEventListenerWithSceneGraphPriority(listener1, sprite1);                                        
ABC动画插件Alembic从浅入深(Unity3D) 今天分享一下Alembic插件的使用教程,这个插件的主要作用就是将.abc文件导入到Unity,然后进行播放。 .abc文件主要是影像业界使用的数据格式,用于存储巨大的顶点缓存数据。 Alembic插件就是转化这些影像资料和动力学等的模拟结果转换为顶点缓数 据为Unity可以使用的文件
【Unity3D 灵巧小知识点】 | Unity中 OnEnable 和 Awake、Start 的区别 Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 。 包括游戏开发、r美术、建筑、汽车设计、影视在内的所有创作者,借助 Unity 将创意变成现实。 Unity 平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。
Unity C# 《有限状态机》的用法教程详解 Unity C# 《有限状态机》的用法教程详解 有限状态机用法教程 本文提供全流程,中文翻译。 助力快速理解 FSM 有限状态机,完成游戏状态的切换 为新手节省宝贵的时间,避免采坑! 有限状态机简称: FSM —— 简称状态机 是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模.
Unity中InitializeOnLoad属性的妙用 InitializeOnLoad 属性应用的对象是 静态构造函数,它可以保证在编辑器启动的时候调用此函数。根据这个特性,可以在编辑器中设置定期的回调(帧更新),来实现类似watchFile的功能。这里借助了EditorApplication类中的 update 委托,在编辑器运行时,它将每秒调用多次。