随笔分类 - cocos2d 逐个击破
自己对cocos2d有了一段时间的学习了,其中不乏一些值得记录下来的,故记录之。
摘要:1.一帧开始之后的过程中,将所有执行到的autorelease的对象加入到池中;2.一帧结束之前取出池中的所有对象记作objs,清空池;3.对取出来的objs进行遍历,每个元素进行一次release; 每一帧都执行上述三步。另外,就是一个对象的析构函数中会对所有的子对象执行一次subObj->rel
阅读全文
摘要:智能指针在C++11的标准中已经存在了,分别是unique_ptr,shared_ptr,weak_ptr,其中最常用的应该是share_ptr,它采用引用计数的方式管理内存,当引用计数为0的时候,自动释放内存,但是由于shared_ptr考虑到了线程安全,所以会存在有较大的性能损失。所以在实时游戏...
阅读全文
摘要:渲染是visit函数来做的,visit是先将不可见的节点和他所有的子节点都跳过,然后再看节点的子节点是否为空,如果为空的话直接看这个节点是否在摄像机可见范围之内,如果在就渲染这个节点,否则什么都不做。如果子节点不为空,就:先将子节点排序,通过zorder排序,如果zorder相同就通过先后加入节点树...
阅读全文
摘要:答案就是:在函数创建对象之前先创建一个自动释放池,因为这个释放池是函数里面的局部变量,所以当函数结束的时候,会调用他的析构函数,而普通的情况是在一帧结束的时候才会调用自动释放池(不是这个,普通的)的析构函数。基于这个背景来分析一下为什么。1.内存峰值过高是为什么? 在cocos2d中因为我们在一帧...
阅读全文
摘要:设想如下场景,这是一个典型的内存合理分配的场景:在一帧内,有若干个函数,每个函数都会创建一系列的精灵,每个精灵都不同,都会占用一定的内存,精灵的总数可能会有1000个,而一个函数只会创建10个精灵这样,创建的精灵只会在这个函数中使用,大致代码如下:for(inti=0;ipush(this);}他向...
阅读全文
摘要:Cocos2d-x用create创建对象,这个方法已经被引擎封装成一个宏定义了:CREATE_FUNC,下面是这个宏定义的实现:#defineCREATE_FUNC(__TYPE__)\static__TYPE__*create()\{\__TYPE__*pRet=new__TYPE__();\if...
阅读全文
摘要:#ifndef __NewAudioEngineDemo__NewAudioEngineDemo__#define __NewAudioEngineDemo__NewAudioEngineDemo__#include "cocos2d.h"#include "ui/CocosGUI.h"#inclu...
阅读全文
摘要:当我们用Xcode写好一个项目的源码之后,如何将它导入到安卓手机中呢?下面我来给大家一步一步讲解:首先,我们打开终端,cd到Cocos2d-x 3.2文件夹中(注意不是你写的项目文件夹,而是官方项目源码。下载地址http://cn.cocos2d-x.org/download/),然后执行如下命令:...
阅读全文