cocos2d-x的几个重要概念

本文分享了作者从MTK方案转向Cocos2d-x的心路历程,并详细解析了Cocos2d-x的基本架构和核心概念,特别介绍了如何解决物体碰撞导致的游戏卡顿问题。

最近的一些事情让我的思想发生了很大的变化,最近在解MTK方案的bug时,由于MTK开放的寄存器说明很少,让我深刻的体会了,MTK的turn key是如何毁掉了一大批中国工程师的。并且再次下定决心转学别的领域。驱动实再是做不下去了。

接触cocos2d-x完全是个意外,是在逛CSDN网页时发现的。根据例子一步步走来。教程比较老,很多api都发现了改变。特别是物体碰撞那一块,基本上只能一个一个的发子弹,否则真机上必然hang住(我是做手机的,比较喜欢在真机上debug)。如果有新手遇到类似的问题可以参考如下的代码:

void HelloWorld::update(float dt){
int i,j;
for(int i = 0; i < _projectiles->count();i++ )
{
CCSprite *projectile =(CCSprite *)_projectiles->objectAtIndex(i);
for(int j = 0; j < _targets->count();j++){
CCSprite *target = (CCSprite *)_targets->objectAtIndex(i);
if(projectile->boundingBox().intersectsRect(target->boundingBox())){
_targets->removeObjectAtIndex(j,true);
_projectiles->removeObjectAtIndex(i,true);
this->removeChild(target,true);
this->removeChild(projectile,true);
_projectilesDestroyed++;

break;
}
}
}
}

这段代码避免了在update里不停的申请释放CCArray,尽可能的减少了for循环。并且使用下标去删除objtect的效率比使用object指针去查找删除效率要高。


好了废话不多说,来说说cocos2d-x的架构和几个重要概念:

1.架构 如下图


对于一个Game 的新coder 来讲入门点也是最难点当然是"Cocos2D Graphic"。

2. Cocos2D Graphic的架构如下图:


2.1 CCApplication:初始化程序,获取屏幕方向,系统语言等,不会直接操作。  

在HelloWorld的那个例子中AppDelegate就是继承了CCApplication,

而AppDelegate.cpp 中实现了applicationDidFinishLaunching、applicationsDidEnterBackground、applicationWillEnterForeground这几个函数都是多态实现它的父类的。(Appdelegate继承CCApplication继承CCApplicationProtocol)

而在CCApplication中有个run(),这个函数才是我们work的主要位置(各个平台实现的差异不一样)。以android为例子,java会去System.loadLibaray("game"),而在JNI的main.cpp中:

void Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit(JNIEnv*  env, jobject thiz, jint w, jint h)
{
    if (!CCDirector::sharedDirector()->getOpenGLView())
    {
        CCEGLView *view = CCEGLView::sharedOpenGLView();
        view->setFrameSize(w, h);


        AppDelegate *pAppDelegate = new AppDelegate();
        CCApplication::sharedApplication()->run(); //这里会去掉cocos2d 中我们实现的的入口,在android上也就是applicationDidFinishLaunching()
    }

}


2.2 CCDirector:导演类,负责管理和切换场景。还负责初始化openGL各项参数。

CCDirector 引擎的控制者,控制场景的切换,游戏引擎属性的设置

2.2.1 单实例模式,通过sharedDirector()来取得对象

2.2.2 attachInView()连接OpenGL的SurfaceVive

2.2.3 setDeviceOrientation()设置横竖屏

2.2.4 setDisplayFPS(true)显示fps帧率 //新手做个游戏一直想把左下角的fps的显示去掉,可以尝试一下这个接口

2.2.5 setAnimationInterval(1.0f/60)设置帧率,每少刷新60次

2.2.5 setScreenSize(480,320)设置屏幕分辨率,高于设置的分辨率时,引擎会自动适配

2.2.6 runWithScene()运行场景

2.2.7 replaceScene()替换场景

2.2.8 resume()进行运行状态

2.2.9 pause()暂停

2.2.10 end()结束

2.3 CCNode:引擎中最重要的元素,所有可以被绘制的东西都是派生于此。它可以包含其它CCNode,可以执行定时器操作,可以执行CCAction。

2.4 CCScene :在游戏里,场景就是关卡,关卡有人物和背景构成

2.5 CCLayer从概念上说,布景就是场景里的背景,其实就是层次的概念,这种概念在kjava时代就有,就是手动的把游戏中的场景分层(也有靠地图编辑器实现这一功能的)

2.6 CCSprite:这就很明显了,当然包括主角和敌人,和npc,以我个人的理解,也包括游戏中的动态大图素及机关等

2.7 CCAction:就是人物(CCSprite)拥有的动作 


Beyond Compare是一款文件差异比较工具的文件和文件夹比较工具,使用该工具可以可视化和调整差异, 合并修改,同步文件夹。支持文件夹比较,文件夹合并和同步,文本比较,表格比较,图片比较,16进制比较,注册表比较,版本比较等;调整差异,合并修改,内置文件浏览器可以针对文件、文件夹之间的差异对比及上传同步。 Beyond Compare 5.0.4.30422是一款先进的文件和文件夹比较工具,它能够帮助用户高效地识别和管理文件差异,支持多种文件类型和格式的比较。使用Beyond Compare,用户可以轻松地对文件夹内容进行同步,无论是进行简单的文件复制还是复杂的项目同步任务。此外,该工具还具备了高级的文件比较功能,如文本比较、表格比较、图片比较、16进制比较以及注册表比较,覆盖了从纯文本到二进制文件的广泛使用场景。 对于文本文件的比较,Beyond Compare提供了语法高亮和行号等辅助功能,让用户在审查代码或文档时能更快地定位差异点。表格比较功能则特别适用于数据分析和处理任务,可以快速识别两个Excel电子表格之间的不同之处。在进行图片文件的比较时,用户可以通过直观的视图了解图片之间的微小差别,这在图像处理和质量控制中尤其有用。 此外,16进制比较功能为开发者提供了深入分析二进制文件差异的手段,无论是在软件开发还是在数据恢复方面都大有裨益。注册表比较则专注于Windows系统的核心配置文件,帮助IT专业人员快速定位系统配置的变化,这对于系统维护和故障排除尤其重要。 Beyond Compare内置的文件浏览器允许用户在一个界面内完成文件的浏览、比较和同步操作,极大的提高了工作效率。内置的差异调整和合并修改功能让同步文件夹的工作更加精确和便捷。用户可以针对不同的文件和文件夹进行个性化设置,实现定制化的比较和同步策略。
内容概要:本文介绍了一种基于Simulink的发电机故障暂态仿真模型,旨在深入研究发电机在发生各类短路故障(如单相接地、两相短路接地及两相相间短路)时电压与电流的动态变化特性。该模型精确构建了发电机及其保护系统的电气结构,能够有效模拟故障瞬间的暂态响应过程,全面分析不同接地方式(中性点不接地、经小电阻接地、经消弧线圈接地)对系统电气量的影响。通过仿真获取的电压、电流波形数据,可用于评估电力系统的暂态稳定性、验证继电保护装置的动作逻辑与灵敏性,并为系统控制策略优化及故障诊断提供理论支撑和技术依据。; 适合人群:电气工程及其自动化、电力系统及其相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真分析、继电保护设计、电网运行维护等工作的工程技术人员。; 使用场景及目标:①用于高校教学与科学研究中对发电机故障机理及暂态过程的可视化分析与深入探讨;②支撑电力系统安全稳定分析、保护定值整定计算、控制策略优化与应急预案制定;③为实际电网故障后的诊断溯源、事故回溯与应急处置决策提供可靠的仿真平台与理论指导。; 阅读建议:建议读者结合MATLAB/Simulink仿真环境进行实践操作,按照文档指导逐步搭建仿真模型,设置不同类型的故障条件进行对比实验,重点观察并分析电压、电流波形的幅值、相位及衰减特性,深入理解其物理成因与系统影响,有条件者可进一步将模型扩展至多机系统以提升研究的工程应用价值。
源码下载地址: https://pan.quark.cn/s/a4b39357ea24 在信息技术行业,特别是智能手机维修和改进的范畴内,“高通9008免拆机救黑砖教程工具”被视为一种通用的处理手段,它主要服务于那些面对设备无法正常运作或处于“黑砖”状态的消费者。这个压缩文件内含针对搭载高通处理器的智能手机的救援指南与实用工具,其核心目标在于协助用户在不进行物理拆解的前提下,成功进入9008模式,进而完成对手机的修复。 我们必须明确理解“高通9008模式”的概念。9008代表了高通芯片的一种下载状态,也称作EDL(eMMC Download Mode)。在该状态下,用户或技术人员能够直接对手机的存储单元进行编程操作、系统升级或固件回载,以此应对软件层面的故障。此类模式一般应用于手机无法正常启动或遭遇严重故障的场合,属于一种较为根本性的修复措施。 “黑砖”状态描述了手机因软件层面的异常而无法开机或完全失去反应的情况,其成因通常涉及系统崩溃、刷机失败、恶意软件入侵等。当常规的恢复措施如强制重启、恢复界面等手段均告无效时,就需要借助9008模式这类特殊通道来实施修复。 小米品牌手机广泛采用了高通处理器,因此当其产品遭遇黑砖问题时,该教程工具显示出极大的实用价值。此压缩文件可能包含以下组成部分: 1. **救砖教程**:提供详尽的流程说明,引导用户如何安全地将设备导入9008模式,以及如何运用相关工具执行固件恢复或刷新操作。 2. **驱动程序**:高通9008模式的有效运行依赖于特定的驱动程序以实现与电脑的通信,压缩包中或许就整合了这些驱动,用户需先行安装它们以便连接手机并开展修复工作。 3. **线刷工具**:诸如MiFlash、QFIL等工具,它们能够支持用户通过...
内容概要:本文围绕Buck电路双闭环控制模型的仿真研究展开,基于Matlab/Simulink平台构建Buck直流降压变换器的电压-电流双闭环控制系统,深入探讨其动态响应特性、稳态精度及抗干扰能力。通过建立完整的系统模型,重点分析内外环控制结构的协同工作机制,尤其是电压外环与电流内环的耦合关系,并研究PI控制器参数整定对系统性能的影响,旨在提升电源系统的控制精度、稳定性和动态响应速度。该研究为电力电子变换器的高性能控制提供了理论依据与仿真验证手段,适用于直流电源、新能源并网、微电网等领域的控制策略开发。; 适合人群:具备电力电子技术、自动控制原理基础知识,熟悉Matlab/Simulink仿真环境,从事电力电子系统设计、新能源发电控制、电源研发等相关工作的工程技术人员及高校电气工程、自动化等专业的研究生。; 使用场景及目标:①掌握Buck电路的工作原理及其双闭环控制架构的设计方法;②学习在Simulink中搭建电力电子与控制结合的系统仿真模型;③掌握PI控制器的调节规律及其对系统稳定性、响应速度的影响机制;④为后续开展DC-DC变换器优化、数字电源设计、新能源系统控制等高级课题提供扎实的仿真基础和技术储备。; 阅读建议:建议读者结合Simulink仿真模型同步操作,重点关注控制器设计思路与参数调试过程,通过改变PI参数观察系统动态响应变化,加深对控制理论的理解,并可参照文中方法拓展至其他拓扑结构(如Boost、Buck-Boost)的闭环控制研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值