[cctk] cocos2d-x终极篇,cctk的诞生

http://blog.youkuaiyun.com/cocosviva/article/details/9256227

感谢各位群主提供良好的学习交流平台。

【Cocos2d-X①群】         190193804

【Cocos2d-X②群】         167047418

 Cocos2D-X Ⅰ群                244959010

 Cocos2d-x技术讨论区     182301894

 cocos2d-x引擎                 72218900

 CocoStudio官方交流群    250406327

 cocos2d-x手机游戏开发   234470058


首先笔者先做一下声明,ccbase里提供的各种功能和解决方案,经过笔者的严格测试,已经几乎不存在BUG了,目前1.0是一个长久稳定版,如果开发者在使用cctk任何一个部分遇到问题,可以立马提交给笔者,笔者将在6小时内给予答复,24小时内给出新版本或解决方案。

笔者:csdn_viva@foxmail.com


运行环境:cocos2d-x 2.1.3


进入主题,不说太多废话了,cctk是基于cocos2d-x游戏开发的一套解决方案,设计理念,框架,思路等,至于cctk名字的来源,笔者也不清楚,随便起的

为什么会有cctk的诞生,在cocos2d-x的游戏开发中,不少人掉到坑里很多回,这个是不可避免的,经过长时间的磨练,能够清楚cocos2d-x的运作,提供正确的解决方案、架构思路等。现在cctk的诞生就为了填补这些容易掉下去的坑,这一套解决方案为初步向移动平台靠拢的公司提供一个良好的平台,也为cocos2d-x的开发者提供一个可参考的思路和架构模式。


先简单介绍一下cctk,cctk包含三个部分




ccbase:管理场景生命周期的一套解决方案 

在场景管理上,cocos2d-x本身提供的CCDirector来管理场景,ccbase提供的CSceneManager是对CCDirector的轻量级包装,首先,所有场景必须继承自CScene,通过类名注册映射,以后运行场景可以通过类名,达到反射的效果,来在任何位置运行一个场景,这样解决了在各个场景文件中,复杂的头文件包含关系。CSceneManager还提供消息机制,只要是在UI线程上任意位置调用PostMessageA 即可对场景运行栈 栈顶的场景发消息,这样就可以剥离场景界面逻辑与游戏逻辑,在游戏逻辑处理器中处理完逻辑,发消息到场景中,再处理UI,完美的达到了解耦分层的效果。CSceneManager还提供全局弹出框的支持,弹出框的构造也是通过类名反射出来的,在UI线程的任意位置,都能打开弹出框,弹出框不受场景的限制(这个CCNode是脱离CCScene根节点的而独立出来的),在任意位置都可调用。


ccbase [http://blog.youkuaiyun.com/u011319079/article/details/9273099]


ccnet:跨平台TCP通信的一套解决方案

在cocos2d-x平台开发模式下,开发网游,网络模型框架必不可少,大部分人都采用网上开源的跨平台框架,odsocket,或者bsdsocket。现在提供ccnet解决方案,ccnet采用的是select模型,无阻塞读写。既然是无阻塞,所以读写就可以放到UI线程了。这样就避免了要去搞跨平台线程的成本和风险,对于select模型,在UI线程,占用资源少,不会影响帧渲染。除了socket部分,ccnet还提供对网络逻辑的封装,CNetBean,使用一个bean对象来管理网络的生命周期,创建(onCreate),连接成功(onConnected),断开连接(onDisconnected),连接出错(onConnectError),连接超时(onConnectTimeout),读到数据(onMessage),CNetBean实现了对数据包粘包组包的解决方案和算法。 另外ccnet提供CStream流对象,可以很轻松的组装字节流(不适用于字符流),使开发者不用再过多的关心网络部分,能把更多的精力放在逻辑上。


ccnet  [http://blog.youkuaiyun.com/u011319079/article/details/9304289]


ccwidget:提供了一套控件库。解决了2d-x在2.1.3之前版本提供的控件中的bug,和增加了一些拓展性 (目前控件支持上还比较少)

控件都是由CCMenuItem拓展来的。CWidgetLayout用来包含所有控件,主要做事件分发和管理优先级。另外CTableView和CTableViewCell做了更多拓展的功能,和解决了之前的bug,ccwidget提供的TableView在手指释放后,可以自动调整位置。使TableView可以兼容CCMenuItem,不会再产生CCMenuItem滑出屏幕还能点击的问题,另外在TableView上的CCMenuItem,不会硬性接收事件,解决了某些按钮过大,几乎占了cell的全部,这样的情况点到CCMenuItem就不能再拖动了,CTableViewCell解决了这个问题。


ccwidget [http://blog.youkuaiyun.com/u011319079/article/details/9304487]


接下来笔者一一介绍每种解决方案带来的功能,提供(源码)(示例代码)(网络小游戏)。


CCTKv1.0.rar  //cctk源码

下载地址:[http://download.youkuaiyun.com/detail/u011319079/5739069]


CCTKv1.0_Test.rar  //cctk的示例程序,演示了各种API的调用方式

下载地址:[http://download.youkuaiyun.com/detail/u011319079/5739101]


CCTKv1.0_SimpleGame  //cctk完成的一个网络小游戏

下载地址:[http://download.youkuaiyun.com/detail/u011319079/5739091]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值