NxShow的博客

记录游戏编程的点点滴滴

【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(3)

上篇文章分析到了定时器的定义,这篇的重点就是定时器是如何运行起来的。 1.从main中寻找定时器的回调 讲定时器的运行,就不得不触及到cocos2dx的main函数了,因为定时器是主线程上运行的,并不是单独线程的,所以它的调用必然会在main函数中,每帧调用。 以下代码就是win32平台下的...

2015-06-05 20:57:11

阅读数 1692

评论数 0

【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(2)

上篇说到定时器的使用方法,这篇主要分析它的实现原理。 1.哈希链表 cocos2dx封装了一个结构体,叫做UT_hash_handle,只要在自定义的结构体中声明这个结构体变量,就实现了哈希链表,并且能使用一系列的哈希链表专用的宏。这个结构体的具体实现如下: typedef struct U...

2015-06-04 13:17:43

阅读数 1534

评论数 0

【深入了解cocos2d-x 3.x】定时器(scheduler)的使用和原理探究(1)

注:本文开始,引擎升级到cocos2dx 3.6 在游戏开发过程中,经常会遇到使用计时器的情况,例如:倒计时,定时炸弹等。scheduler是cocos2dx 2.x时代就已经存在的产物,主要用于各种延时函数以及各种每帧运行的函数。本文主要介绍scheduler的API函数以及使用方法。 首先,所...

2015-06-02 14:00:35

阅读数 1875

评论数 0

【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(2)

本文的主要内容是根据跑马灯解析ClippingNode实现原理。本文涉及到cocos2dx 3.x的渲染机制以及部分opengl的知识。 首先看看上一篇文章中说到的跑马灯的简单实现: //设置模板 auto stencil = Sprite::create(); //设置显示区域大...

2015-05-19 13:44:12

阅读数 1104

评论数 0

【深入了解cocos2d-x 3.x】一步一步通过ClippingNode实现一个功能完善的跑马灯公告(1)

这篇文章主要是通过一步一步实现一个功能完善的跑马灯公告来展示ClippingNode的用法并且最终深入ClippingNode的源码,了解其实现原理。 首先,先介绍一下ClippingNode,ClippingNode也叫裁剪节点,能将一些内容通过使用模板裁剪出来显示在界面上,可以实现一些很炫酷的...

2015-04-15 13:19:40

阅读数 1838

评论数 0

【深入了解cocos2d-x 3.x】内置数据结构(2)——Map

其实最没意思的数据结构就是这两个了,完完全全就是std::map和std::vector上面再加了一层引用计数。当然,这也有好处,就是支持std算法以及支持cocos2d-x的内存管理机制。 看源码可以知道(下均只对Map进行分析,Vector同理) template class Map { p...

2015-03-30 14:42:57

阅读数 884

评论数 0

【深入了解cocos2d-x 3.x】内置数据结构(1)——智能指针

智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游...

2015-03-28 12:00:56

阅读数 1353

评论数 2

【深入了解cocos2d-x 3.x】UI树(3)——UI树的渲染机制

渲染系统是游戏引擎里面最重要的一个模块之一了,如何遍历UI树,如何将UI合理的渲染在屏幕上,如何选择渲染的顺序,这是渲染系统最需要考虑的。其实遍历的顺序就决定了渲染的顺序。 cocos2d-x的渲染函数是通过Node::visit来进行的,首先看看这个函数干了什么吧 void Node::vi...

2015-03-27 12:10:33

阅读数 1161

评论数 1

【深入了解cocos2d-x 3.x】如何进行合理的内存分配

设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下: for(int i = 0; i <...

2015-03-23 11:18:22

阅读数 1141

评论数 0

【深入了解cocos2d-x 3.x】UI树(2)——UI树的内存管理机制

上篇文章分析了什么是UI树,以及UI树的使用方法,这节会重点分析UI树的内存管理机制以及如何利用UI树对游戏中的UI内存进行合理的管理。 说到UI树的内存管理机制,就不得不提cocos2d-x的内存管理机制——引用计数了,相信只要不是初学者都已经理解了这一块了,这里还是对cocos2d-x的内...

2015-03-22 23:43:40

阅读数 1115

评论数 2

【深入了解cocos2d-x 3.x】UI树(1)——什么是UI树

近期在学习《我所理解的Cocos2d-x》这一本书,被作者深厚的功力所折服,感觉到自己实在是太弱了,cocos2d-x当中要学习的东西实在是太多了。 在《我所理解的cocos2d-x》中关于UI树与内存管理其实是关联性很强的,这一篇主要写我对UI树的理解。(本文基于cocos2d-x 3.2版本...

2015-03-22 22:41:20

阅读数 1826

评论数 0

do{}while(0)与CC_BREAK_IF的绝妙搭配

从一开始觉得没有必要,到觉得非常好用,我经历了大概两个月的时间,下面来总结一下什么情况下使用这种结构吧。 第一种情况:当加载文件的时候,如果加载文件失败,需要报错的时候。 当前,可以用try{}catch(){}finally{}这种结构,但是这样做会极大的增加编译后文件的大小,使用do{}w...

2014-10-19 11:57:07

阅读数 1253

评论数 0

充分利用C++11特性,Cocos2dx对话框的实现【续】

上一篇已经实现了如何建立一个模态对话框和非模态对话框,但是在手机上

2014-09-29 07:39:07

阅读数 1141

评论数 3

【cocos2dx】rapidjson使用方法以及中文显示的解决方法【续】

上一个博客讲了怎么利用cocos2dx中集成的rapidjson读取中文字符串,现在这次

2014-09-27 09:39:45

阅读数 2153

评论数 1

充分利用C++11特性,Cocos2dx对话框的实现

一般一个对话框会分为模态对话框和非模态对话框两种,模态对话框就是

2014-09-23 21:59:50

阅读数 2316

评论数 0

Cocos2dx 3.2键盘监听的打开方式以及点击两次返回退出的实现方法

首先,在Scene中重载下面两个函数 virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event); virtual void onKeyReleased(EventKeyboard::KeyCod...

2014-09-21 11:19:08

阅读数 1296

评论数 0

Cocos2dx编译到android遇到的一个坑爹问题以及解决方法

问题的表现就是,第一次打开,编译,成功 啥问题都没有。 第二次打开,报错,无法编译,C、C

2014-09-21 11:06:20

阅读数 699

评论数 0

关于野指针

所谓的野指针,实际上就是指针内存释放了之后,还继续调用

2014-09-15 10:57:39

阅读数 774

评论数 0

关于Cocos2dx的retain\release\autorelease的理解

众所周知,Cocos2dx的内存管理采用的是类似O-

2014-08-18 09:50:16

阅读数 921

评论数 0

cocos2dx 实现图片椭圆旋转选择物品界面

界面效果如下:

2014-07-17 17:21:07

阅读数 4570

评论数 3

提示
确定要删除当前文章?
取消 删除
关闭
关闭