Cocos2d-x C++
土豆宝
这个作者很懒,什么都没留下…
展开
-
Cocos2d-x C++ 内存管理
文章目录简述源码分析创建节点时引用/取消引用节点时自动回收内存泄漏检查简述cocos2dx使用引用计数法(计数变量为基类Ref的成员变量_referenceCount)自动管理内存,自动回收池AutoReleasePool由PoolManager进行管理,每当使用create函数创建对象时,对象的_referenceCount为1并加入到自动回收池中,之后引用此对象/取消引用会同步加/减计数变...原创 2019-07-26 14:10:00 · 228 阅读 · 0 评论 -
Cocos2d-x C++ Sprite Slice9渲染模式的应用
简介在Slice9渲染模式中,会将需要渲染的纹理分为9块(不一定是均分,通过setCenterRect()设置中间区域的位置和大小,其他区域的位置和大小可以通过中间区域的矩形推算出来),在保持1、3、7、9块形状不变的情况下,2、8块左右拉伸,4、6块上下拉伸,5块两个方向同时拉伸。进行拉伸后如图所示:Slice9渲染模式的显示效果和9Patch图片显示相同,不同的是Slice9是一种渲...原创 2019-08-01 14:54:15 · 350 阅读 · 0 评论 -
Cocos2d-x C++ Sprite、Texture2D、TextureCache、SpriteBatchNode、SpriteFrame、SpriteFrameCache及相关类 源码简析
文章目录Sprite简介渲染模式QUAD(默认模式)POLYGONSLICE9QUAD_BATCHNODE优化渲染属性介绍当节点由图集渲染时使用以下属性texture atlas、atlas indexbatch node当节点由自身渲染时使用以下属性blend functexture、rect、rect rotated当节点渲染模式为slice 9使用以下属性center rect normal...原创 2019-08-01 10:37:29 · 797 阅读 · 0 评论 -
Cocos2d-x C++ Scheduler、Timer 源码简析
文章目录涉及结构ccSchedulerFunctListEntrycallbacktargetprioritypausedmarked for deletiontHashUpdateEntrylistentryhhtHashTimerEntrytimerstimerIndexcurrentTimerTimer简介属性介绍schedulerelapsedrun foreveruse delaytim...原创 2019-07-27 11:56:41 · 618 阅读 · 0 评论 -
Cocos2d-x C++ Node 使用LocalZOrder$Arrival更高效的排序
文章目录源码原理宏定义CC_LITTLE_ENDIANCC_64BITS源码在Node的定义中,有这么一处:#if CC_LITTLE_ENDIAN union { struct { std::uint32_t _orderOfArrival; std::int32_t _localZOrder; };...原创 2019-07-26 14:32:26 · 275 阅读 · 0 评论 -
Cocos2d-x C++ Node 使用name取代tag
文章目录优势劣势使用hash避免性能损耗调用enumerateChildren函数使用复杂条件枚举节点在最新的cocos注释中,官方推荐使用name替代tag,本文对此改动进行分析。优势name相比tag更加直观,tag一般通过常量赋值,调试时显示数字往往还要去查询对应的常量名称,而name可以直接显示。tag表示的内容单一,数字只能代表单一的信息,无法表示多种信息。而name可以...原创 2019-07-26 14:29:12 · 478 阅读 · 0 评论 -
Cocos2d-x C++ Node GlobalZOrder、LocalZOrder、OrderOfArrival源码详解
文章目录分析结论分析z order主要作用于渲染阶段,先从Director::mainLoop()开始看代码(游戏运行过程中每帧都会调用mainLoop函数,用于每帧处理事件、渲染图像等):void Director::mainLoop(){ //... { //处理事件并绘制图像 drawScene(); //... ...原创 2019-07-26 14:26:23 · 297 阅读 · 0 评论 -
Cocos2d-x C++ 延迟计算
cocos使用_xxxDirty属性存储xxx的值是否需要重新计算,并在需要的时候再重新进行计算,如:void Node::setScaleY(float scaleY){ if (_scaleY == scaleY) return; _scaleY = scaleY; //修改了属性,变换矩阵需要重新计算,但此时仅修改标志位 _tra...原创 2019-07-26 14:21:15 · 305 阅读 · 0 评论 -
Cocos2d-x C++ Node 源码简析
文章目录简介属性介绍rotationscalepositionskewanchor pointcontent sizetransformz ordertagnameuser data/objectrunningvisibleisTransitionFinishedopacitycolorcamera maskcallbackattached node count函数介绍void cleanup()...原创 2019-07-26 14:15:43 · 268 阅读 · 0 评论 -
Cocos2d-x C++ SpriteFrame 图集(Atlas)的优劣
优势图片加载到内存中时,会分配超过图片尺寸的2次幂尺寸,如65*65的图片会分配128*128*每像素字节数的空间,每个图片单独加载会浪费内存。而图集在保证图片尺寸是2次幂的情况下尽可能多的放入图片,减少内存占用。读取文件这种IO操作极其耗费时间,读取一个图集的时间要远远少于多次读取图片的时间。使用图集的Sprite与SpriteBatchNode配合使用可以在一次绘制中绘制图集中的所有节...原创 2019-08-01 22:56:15 · 667 阅读 · 0 评论