【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总

Cocos的回调函数 1.cocos中的回调函数有如下种类: 可以看出,这些callfunc实质就是返回一个函数指针~ typedef void (CCObject::*SEL_SCHEDULE)(float);// 用来调update typedef void (CCObject::*SEL_CallFunc)();// 用来自定义无参回调 typedef void (CCObject::*SEL_Cal 阅读详情

一、按钮回调


1. Lambda 表达式,C++11 Lambda 赋予了Cocos2d-x 3.0创建回调函数的灵活性。

auto itemNor	=	Sprite::create("CloseNormal.png");
auto menuItem	=	MenuItemSprite::create(itemNor,nullptr,nullptr,[](Ref* sender)
{
	log("show this msg.");
});
auto menu	=	Menu::create(menuItem,nullptr);
this->addChild(menu);

2.宏定义bind方式创建回调.
auto itemNor	=	Sprite::create("CloseNormal.png");
auto menuItem	=	MenuItemSprite::create(itemNor,nullptr,nullptr,CC_CALLBACK_1(HelloWorld::menuCloseCallback,this));
auto menu	=	Menu::create(menuItem,nullptr);
this->addChild(menu);

void HelloWorld::menuCloseCallback(Ref* pSender)
{
	log("show this msg.");
}

3.MenuToggleItem回事件回调

auto toggleSpNor	=	Label::createWithSystemFont("OPEN_BAME","WRYH",65);
auto toggleSpSel	=	Label::createWithSystemFont("CLOSE_BAME","WRYH",65);
auto toggleSpDis	=	Label::createWithSystemFont("DISABLE_BAME","WRYH",65);
auto toggleItemNor	=	MenuItemLabel::create(toggleSpNor);
auto toggleItemSel	=	MenuItemLabel::create(toggleSpSel);
auto toggleItemDis	=	MenuItemLabel::create(toggleSpDis);

auto toggleItem		=	MenuItemToggle::createWithCallback(CC_CALLBACK_0(HelloWorld::toggleCallBack,this),toggleItemNor,toggleItemSel,nullptr);

auto toggleMenu	=	Menu::create(toggleItem,nullptr);
this->addChild(toggleMenu);

void HelloWorld::toggleCallBack()
{
	log("Do something when toggle did touched..");
}



二、定时器回调

/*周期定时调用*/
this->schedule(SEL_SCHEDULE(&HelloWorld::gameStep));
/*倒计是定时调用一次*/
this->scheduleOnce(SEL_SCHEDULE(&HelloWorld::gameStep),3.0f);\
/*周期定时调用update需重写update方法*/
this->scheduleUpdate();

void HelloWorld::gameStep(float dt)
{
	log("on timer...");
}

三、触屏事件回调

auto touchEvt		    =	cocos2d::EventListenerTouchOneByOne::create();
touchEvt->onTouchBegan	    =	CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
touchEvt->onTouchMoved	    =	CC_CALLBACK_2(HelloWorld::onTouchMoved,this);
touchEvt->onTouchEnded      =	CC_CALLBACK_2(HelloWorld::onTouchEnded,this);
touchEvt->onTouchCancelled     =	CC_CALLBACK_2(HelloWorld::onTouchCancelled,this);

Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchEvt,this);

bool HelloWorld::onTouchBegan(cocos2d::Touch* touch,cocos2d::Event* evt)
{
	log("Touch began..");
	return true;
}
void HelloWorld::onTouchMoved(cocos2d::Touch* touch,cocos2d::Event* evt)
{
	log("Touch moved..");
}
void HelloWorld::onTouchEnded(cocos2d::Touch* touch,cocos2d::Event* evt)
{
	log("Touch leave..");
	Director::getInstance()->getEventDispatcher()->removeEventListenersForTarget(this);
}
void HelloWorld::onTouchCancelled(cocos2d::Touch* touch,cocos2d::Event* evt)
{
	log("Something was happend , touch event is cut..");
}

四、动作回调


auto callBack		=	CallFunc::create(CC_CALLBACK_0(HelloWorld::actionCallBack,this));
this->runAction(callBack);

void HelloWorld::actionCallBack()
{
	log("Do something when action did finished..");
}

五、自定义事件回调


auto callBack		=	[](EventCustom* evt)
							{
								log("catch an custom event!!");
							};
cocos2d::EventListenerCustom* customEvt	=	EventListenerCustom::create("ME_CUSTOM_EVENT_TEST",callBack);
//注册自定义事件(处理优先级为12)
Director::getInstance()->getEventDispatcher()->addEventListenerWithFixedPriority(customEvt,12);

//抛出自定义事件
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent("ME_CUSTOM_EVENT_TEST");





cocos2d-x 3.0 场景切换特效汇总 cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用。 场景切换用到导演类Directory,大多数用的都是替换场景,当然也可以用出栈进栈的方式来进行场景的替换,这里以replaceScene来举例。 场景切换特效的应用代码: auto scene=HelloWorld::createScene();/ 阅读详情

相关推荐

Cocos2d-x 3.0中 物理碰撞检测中onContactBegin回调函数不响应问题

好吧,其实这篇也是临时冒出来的,最近朋友要做个物理游戏,以前做物理还是用box2d,呃,确实要花些功夫才能搞懂其中的精髓,但是听讲这套引擎重新封装了一次,要容易很多,所以就简单尝试了一下,感觉确实要简单不少,不过在这其中还是遇到了些问题,首先就来说说onContactBegin这个回调函数响应问题。 先说说情况,简单做了一个打砖块的游戏,前面一切都很顺利,只是做到碰撞检测的时候,发现回调

wangdi的游戏社区 6289

cocos代码研究(23)Widget子类ScrollView学习笔记

基础理论 一个能够被用户触摸滚动的一个层次型布局容器视图,允许其尺寸大于屏幕显示的物理尺寸,其内部维护有一个布局用于水平的或垂直的存放子节点。继承自 Layout,被 ListView 继承。 代码实践 void setBounceEnabled (bool enabled)设置当滚动到边界时,是否内部容器发生弹回(bounce)效果 bool isBounceEnabled (...

282

Cocos2d-x3.0 不规则Button

这是我参照之前在iOS项目中用

杜甲同学的专栏 4651

cocos2dx中的回调函数

在coco中,经常可以看到回调函数的身影,从3.x开始,coco采用c++11的std::bind作为回调函数的承载 如果对std::bind不太了解的同学可以看看关于std::bind的详解#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__) #

yasin1151的博客 766

基于uni-app的智慧零工平台前端开发:跨端实战与核心模块实现

跨端开发是当前移动应用开发领域的重要技术方向,它旨在通过一套代码实现在多个平台(如小程序、H5、App)的部署,从而大幅提升开发效率并降低维护成本。其核心原理通常基于统一的JavaScript框架(如Vue或React),通过编译时或运行时的适配层,将通用代码转换为各平台原生或接近原生的代码。这一技术为开发者带来了显著的价值,尤其适用于需要快速验证、覆盖多端用户且资源有限的场景,例如学生项目、创业公司MVP或中大型应用的跨平台模块。在实际应用中,跨端技术常被用于构建电商、社交、工具及O2O类应用。本文以智慧

aoe41606的博客 437

ribbon回调函数大全资料.xlsx

ribbon回调函数大全资料

Cocos2d-x教程(18)-回调函数

Cocos2d-x 回调函数使用方法

Cocos2d-x,IOS,游戏,开发/交流/学习/资源 马宗扬 3450

MATLAB绘图中文乱码终极解决方案:从方框到清晰显示的全面指南

本文提供了MATLAB绘图中文乱码的全面解决方案。针对中文显示为方框的问题,从单次绘图的临时字体设置,到通过修改默认配置实现一劳永逸,再到系统级字体排查与Java环境配置,给出了详细的步骤指南。文章还涵盖了字体名称指定、图像导出防丢失以及跨平台协作等高级技巧,帮助用户彻底解决中文乱码困扰。

weixin_29093017的博客 616

cocos2dx[3.2](11)——新回调函数std::bind

【唠叨】自从3.0引用了C++11标准后,回调函数采用的新的函数适配器:std::function、std::bind。而曾经的回调函数menu_selector、callfunc_selector、cccontrol_selector等都已经被无情的抛弃了。取而代之的则是一系列的CC_CALLBACK_*。【致谢】http://blog.cs...

weixin_33762321的博客 206

使用WSL2安装ubuntu系统并配置深度学习环境

wsl2安装ubuntu部署深度学习环境的方法

u013358093的博客 2702

(目录)微气候模型ENVI-met模拟的基本使用教程

ENVI-met模拟操作系列(一) 介绍:

ysqzhatian的博客 2万+

Cocos2d-x 3.0 新特性体验(2) 回调函数的变化

在cocos2d-x 2.x版本中的回调函数的用法想必大家都很是熟悉,例如在menu item,call back action中都需要大量的使用到回调函数,但是在使用过程中总是感觉到比较冗余麻烦的,在3.0版本,使用到了C++11 的新特性,改进增加了回到函数的使用形式,其中最令人欣慰的是,可以使用闭包,对于有过iOS开发经验的来说,应该很亲切,就是 block。 下面将通过几个例子详细介

小邓笔记 1万+

HWDB1.1数据集处理全攻略:从gnt文件到PNG图片的完整转换教程

本文提供了HWDB1.1数据集处理的完整教程,详细解析了gnt二进制文件格式,并给出了从文件解析、标签映射到批量转换为PNG图片的Python脚本。教程涵盖了环境准备、跨平台解压方案,以及为PyTorch等深度学习框架准备数据的最佳实践,是进行手写汉字识别研究不可或缺的实用指南。

2w3e4r5t6y的博客 630

cocos2d-x 3.0 回调事件

cocos2d-x3.0 中使用了C++11的性特性,因此回调的方式也相应地做了一些改变,因此我们需要先去了解一下C++11中的std::function,std::bind和lambda表达式,可以参考下面这篇博客http://www.cnblogs.com/nzbbody/p/3489573.html,在此还是感谢那些不辞劳苦分享经验的朋友。

decajes的专栏 9809

【数字IC/FPGA】低功耗设计

低功耗设计方法功耗的类型低功耗设计方法静态低功耗技术多阈值工艺方法电源门控方法体偏置动态低功耗技术多电压域(Multi-Voltage Domain)预计算门控时钟门级优化技术毛刺的消除逻辑级优化物理级优化控制输入向量低功耗Soc系统的动态管理动态电压及频率调节技术低功耗操作系统存储器功耗控制总结 功耗的类型 CMOS电路中的功耗由两部分构成,第一部分为负载电容充放电时引起的功耗,称为动态功耗,另一部分为漏电流引起的功耗,称为静态功耗。其中动态功耗包括翻转功耗和短路功耗。翻转功耗是数字电路中信号翻转时电容充

qq_40268672的博客 3072

学Simulink--环境感知场景实例:基于Simulink的毫米波雷达多目标跟踪仿真

本文介绍了基于Simulink的毫米波雷达多目标跟踪仿真系统,重点分析了FMCW雷达信号处理流程(Range/Doppler FFT、CFAR检测)和多目标跟踪算法(JPDA数据关联、EKF状态估计)。通过构建城市道路交叉场景,验证了系统在跟踪精度(位置误差<0.2m)、实时性(单帧处理24ms)和鲁棒性(ID切换率<5%)方面的性能优势,并提出了UKF滤波、多传感器融合等优化方向。该仿真系统为自动驾驶环境感知提供了实用的毫米波雷达跟踪解决方案。

amy_mhd的博客 92

枫叶天空Cocos2d-x3.0系列教程一 环境配置

写在前面的话 今天是2014年1月31日,大年初一。新年要有新气象,今年的博客就从这里起步吧。 转眼间已经工作五年了,在页游的圈子里摸爬滚打,也经历了不少事情。怎么说呢,有苦有甜吧。如今到了而立之年,面临着更大的压力,特别是技术的更新换代,随着招聘网站上的as的职位愈加的减少,我终于意识到,必须学习了!为此,我重新在csdn开博,即是为我自己的学习做一个笔记,同时也是希望将我多年的前端经验

枫叶天空 3309

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

共轭梯度法的核心原理是求解优化问题的共轭向量组作为优化方向,由于优化方向间彼此正交,故每次迭代只需沿着一个方向寻优而互不影响。本文设计基于ESDF的障碍约束、曲率约束和平滑约束,基于ROS C++和Python提供了共轭梯度法的轨迹优化实践案例

FRIGIDWINTER的博客 1万+

枫叶天空Cocos2d-x3.0系列教程索引

枫叶天空Cocos2d-x3.0系列教程一  环境配置:http://blog.csdn.net/u012077912/article/details/18887313 枫叶天空Cocos2d-x3.0系列教程二 序列帧动画: http://blog.csdn.net/u012077912/article/details/18887491

枫叶天空 2964

ISP 芯片作为独立设备节点的驱动实现要点:多平台结构差异与工程部署策略解析

随着 ISP(Image Signal Processor)从 SoC 集成形态向独立芯片模块演进,在多摄系统、高动态场景、AI 图像前处理等需求下,ISP 作为单独设备节点进行驱动设计已成为主流趋势。尤其在多 SoC 平台(如高通、联发科、展锐、Rockchip)中,不同厂商对 ISP 的抽象方式与驱动接口处理存在显著差异。本文以实际工程为基础,从 Linux 内核下的设备注册流程、media\_entity 配置、VideoDevice 分配、数据 DMA 管理、与 sensor 的流同步控制等关键点展

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1462

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Cocos2d-x3.0如何绑定调用lua回调函数

首先,在C++先写一个类,里面包含这么一个函数 void registerScriptFuncHandler(int handler) { return; } 没错,这个函数什么都不用做。 接着使用 genbinding.py 导出类 你会得到一个不能用的导出函数 int lua_FRAccordi

xilong_li的专栏 2163

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【cocos2d-x 3.0之二】事件回调函数的变化

从3.0开始,事件回调函数由原来的schedule_selector和menu_selector等变成CC_CALLBACK_0、CC_CALLBACK_1、CC_CALLBACK_2、CC_CALLBACK_3。 下面先来介绍几个 1. CC_CALLBACK_1 [cpp] view plaincopy v2.2   MenuIte

fengqiaojiangshui的专栏 586

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

cocos2d-x 3.0 开发(一) Hello_New_World

2dx 的3.0版本是个与以往不同的版本。变化比2dx从1.x 到2.x的变化还要大不少。当然这都是官方承诺的,只有我们在项目中实际用上了才有意义。这篇是3.0系列博客的一个HelloWorld。希望新的版本会带给我们更多惊喜。接下来我会研究一下新版的特性,并写成博客。希望大家关注,路过看看,指点一二。另一方面,也共同推进2dx的进步。 废话少说,接下来进入正题。搭建一个3.0的环境。

阿修罗道 4万+
上一篇: Cocos2d-x在线粒子编辑器
下一篇: 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之一】环境搭建
陈苏熙
博客等级 码龄17年 38粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值