
cocos2dx
文章平均质量分 85
NxShow
努力学习中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Cocos2d-x】无法打开文件“libcocos2d.lib”异常解决
解决方法很简单,只要把路径改成不是中文的就成了原创 2014-02-08 21:32:07 · 2905 阅读 · 1 评论 -
【深入了解cocos2d-x 3.x】内置数据结构(1)——智能指针
智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏开发中,往往不会用到shared_ptr。在cocos2d-x3.2以及更高的版本中,cocos原创 2015-03-28 12:00:56 · 1676 阅读 · 2 评论 -
【深入了解cocos2d-x 3.x】UI树(1)——什么是UI树
近期在学习《我所理解的Cocos2d-x》这一本书,被作者深厚的功力所折服,感觉到自己实在是太弱了,cocos2d-x当中要学习的东西实在是太多了。在《我所理解的cocos2d-x》中关于UI树与内存管理其实是关联性很强的,这一篇主要写我对UI树的理解。(本文基于cocos2d-x 3.2版本,其他版本API可能会有所变化)首先得普及一下cocos2d-x的基础概念,cocos2d-x的游原创 2015-03-22 22:41:20 · 2727 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】如何进行合理的内存分配
设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下:for(int i = 0; i < 10; i++){ Sprite* s = Sprite::create(); //-- doSom原创 2015-03-23 11:18:22 · 1480 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】UI树(2)——UI树的内存管理机制
上篇文章分析了什么是UI树,以及UI树的使用方法,这节会重点分析UI树的内存管理机制以及如何利用UI树对游戏中的UI内存进行合理的管理。说到UI树的内存管理机制,就不得不提cocos2d-x的内存管理机制——引用计数了,相信只要不是初学者都已经理解了这一块了,这里还是对cocos2d-x的内存管理机制做一个大概的介绍吧。cocos2d-x采用的是引用计数法作为其内存管理的方法,引用原创 2015-03-22 23:43:40 · 1425 阅读 · 2 评论 -
【深入了解cocos2d-x 3.x】内置数据结构(2)——Map
其实最没意思的数据结构就是这两个了,完完全全就是std::map和std::vector上面再加了一层引用计数。当然,这也有好处,就是支持std算法以及支持cocos2d-x的内存管理机制。看源码可以知道(下均只对Map进行分析,Vector同理)template class Map{public: // -----------------------------------原创 2015-03-30 14:42:57 · 1250 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(1)
这篇文章主要是通过一步一步实现一个功能完善的跑马灯公告来展示ClippingNode的用法并且最终深入ClippingNode的源码,了解其实现原理。首先,先介绍一下ClippingNode,ClippingNode也叫裁剪节点,能将一些内容通过使用模板裁剪出来显示在界面上,可以实现一些很炫酷的效果。来看看今天要实现的效果1、ClippingNode类分析先来看看Cli原创 2015-04-15 13:19:40 · 2216 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)
上篇说到定时器的使用方法,这篇主要分析它的实现原理。1.哈希链表cocos2dx封装了一个结构体,叫做UT_hash_handle,只要在自定义的结构体中声明这个结构体变量,就实现了哈希链表,并且能使用一系列的哈希链表专用的宏。这个结构体的具体实现如下:typedef struct UT_hash_handle { struct UT_hash_table *tbl; vo原创 2015-06-04 13:17:43 · 2299 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(1)
注:本文开始,引擎升级到cocos2dx 3.6在游戏开发过程中,经常会遇到使用计时器的情况,例如:倒计时,定时炸弹等。scheduler是cocos2dx 2.x时代就已经存在的产物,主要用于各种延时函数以及各种每帧运行的函数。本文主要介绍scheduler的API函数以及使用方法。首先,所有继承Node的类都可以使用scheduler,以下是Node类下相关API的介绍 /*原创 2015-06-02 14:00:35 · 2372 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(2)
本文的主要内容是根据跑马灯解析ClippingNode实现原理。本文涉及到cocos2dx 3.x的渲染机制以及部分opengl的知识。首先看看上一篇文章中说到的跑马灯的简单实现://设置模板 auto stencil = Sprite::create(); //设置显示区域大小 stencil->setTextureRect(Rect(0, 0, 50, 30));原创 2015-05-19 13:44:12 · 1446 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】UI树(3)——UI树的渲染机制
渲染系统是游戏引擎里面最重要的一个模块之一了,如何遍历UI树,如何将UI合理的渲染在屏幕上,如何选择渲染的顺序,这是渲染系统最需要考虑的。其实遍历的顺序就决定了渲染的顺序。cocos2d-x的渲染函数是通过Node::visit来进行的,首先看看这个函数干了什么吧void Node::visit(Renderer* renderer, const Mat4 &parentTransform原创 2015-03-27 12:10:33 · 1685 阅读 · 1 评论 -
do{}while(0)与CC_BREAK_IF的绝妙搭配
从一开始觉得没有必要,到觉得非常好用,我经历了大概两个月的时间,下面来总结一下什么情况下使用这种结构吧。第一种情况:当加载文件的时候,如果加载文件失败,需要报错的时候。当前,可以用try{}catch(){}finally{}这种结构,但是这样做会极大的增加编译后文件的大小,使用do{}while(0)加上CC_BREAK_IF就能实现一样的效果,而且不增加文件的大小。下面是一个例子:原创 2014-10-19 11:57:07 · 1520 阅读 · 0 评论 -
充分利用C++11特性,Cocos2dx对话框的实现【续】
上一篇已经实现了如何建立一个模态对话框和非模态对话框,但是在手机上原创 2014-09-29 07:39:07 · 1470 阅读 · 3 评论 -
COCOS2DX3.0的3种触摸响应机制
现在网上关于3.0的资料实在是有点少,不过我还是很喜欢3.0的风格的,C++11也带来了很多方便。其实说的是4种触摸机制,其实有一部分cocos2dx已经不建议用了,会爆出大量警告。第一种是采用函数回调,主要是用于MenuItem// a selector callbackvoid menuCloseCallback(Object* pSender);auto closeItem原创 2014-02-12 23:29:05 · 4761 阅读 · 0 评论 -
cocos2dx 实现图片椭圆旋转选择物品界面
界面效果如下:原创 2014-07-17 17:21:07 · 5971 阅读 · 3 评论 -
Cocos2dx编译到android遇到的一个坑爹问题以及解决方法
问题的表现就是,第一次打开,编译,成功 啥问题都没有。第二次打开,报错,无法编译,C、C原创 2014-09-21 11:06:20 · 1207 阅读 · 0 评论 -
Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法
首先,在Scene中重载下面两个函数 virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event); virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);这原创 2014-09-21 11:19:08 · 1660 阅读 · 0 评论 -
关于Cocos2dx的retain\release\autorelease的理解
众所周知,Cocos2dx的内存管理采用的是类似O-原创 2014-08-18 09:50:16 · 1263 阅读 · 0 评论 -
关于野指针
所谓的野指针,实际上就是指针内存释放了之后,还继续调用原创 2014-09-15 10:57:39 · 1040 阅读 · 0 评论 -
【cocos2dx】rapidjson使用方法以及中文显示的解决方法
新版cocos2dx使用了rapidjson库来替换原来的jsoncpp。解析速度提高了不少,但是好像没有那么方便。今天想做一个读取中文数据的类。磨磨蹭蹭也转了不少弯路,终于搞出来了一个可用的,数据使用JSON存储,下面是存储的数据{"chinese":[{"ID":1,"String":"五子棋"},{"ID":2,"String":"当前玩家:"},{"ID":3,"Str原创 2014-02-18 22:28:40 · 14348 阅读 · 3 评论 -
【cocos2dx】rapidjson使用方法以及中文显示的解决方法【续】
上一个博客讲了怎么利用cocos2dx中集成的rapidjson读取中文字符串,现在这次原创 2014-09-27 09:39:45 · 3735 阅读 · 1 评论 -
充分利用C++11特性,Cocos2dx对话框的实现
一般一个对话框会分为模态对话框和非模态对话框两种,模态对话框就是原创 2014-09-23 21:59:50 · 2688 阅读 · 0 评论 -
【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)
上篇文章分析到了定时器的定义,这篇的重点就是定时器是如何运行起来的。1.从main中寻找定时器的回调讲定时器的运行,就不得不触及到cocos2dx的main函数了,因为定时器是主线程上运行的,并不是单独线程的,所以它的调用必然会在main函数中,每帧调用。以下代码就是win32平台下的main函数int APIENTRY _tWinMain(HINSTANCE hInstance,原创 2015-06-05 20:57:11 · 2248 阅读 · 0 评论