cocos2dx 学习笔记

1. 动作类:

CAction : CActionInterval(持续性) 和 CActionInstant(瞬时性)

帧动画 CAnimate,  帧动画序列 CAnimation

2. Cocos2dx 中所有对象都创建在堆上,然后通过指针引用;

创建方法:

1) new 对象 -> init方法, 需要使用者进行释放;

2)静态的工厂方法,不需要使用者进行释放;

3. 选择器 selector, 类似于函数指针

shedule_selector(SELECTOR)

callfunc_selector(SELECTOR)

menu_selector(SELECTOR)

4. 属性

CC_SYNTHESIZE(int, tag, Tag)

注意,如果属性类型是对象,需要写成指针的形式

相关宏, CC_SYNTHESIZE,  CC_SYNTHESIZE_READONLY, ...

5.  内存管理

retain()   引用加1;

release() 引用减1;

autorelease()  将对象放入自动回收池,当对象回收池自身被释放时,它当中所有的对象都 release()一次;

每一帧开始时,创建一个新的回收池;

每一帧结束时,回收池中的对象都会被释放一次

工厂方法:

  

     CCObject* factorMethod() {

         CCObject* ret = new CCObject()

          //这里对对象进行必要的初始化 

          //...

         ret->autorelease()

         return ret

     }

autorelease()很耗资源,应该尽量使用release(),只有在工厂方法等不得已的情况才使用 autorelease()

6. 使用CCArray和CCDictory, 因为它们在释放时会调用release()

所以,尽量用这两者,不要使用STL

7. 使用内存相关宏, 等等

CC_SAFE_RETAIN

CC_SAFE_DELETE

CC_SAFE_FREE

CC_SAFE_RELEASE

8. 函数跟踪

 

 class LifeCircleLogger{

    string m_msg;
    public:
    LifeCircleLogger(){}
    LifeCircleLogger(const string& msg):m_msg(msg){
      CCLog("%s BEGINS!",m_msg.c_str());}
    ~LifeCircleLogger(){CCLog("%s ENDS!",m_msg.c_str());}
    };

    #define LOG_FUNCTION_LIFE LifeCircleLogger(__FUNCTION__);

  

9

cocos2dx 学习笔记

时间: 2024-07-28 12:49:02

cocos2dx 学习笔记的相关文章

【Cocos2D-X 学习笔记】为精灵添加单点触控

由于Cocos2d-x处于新学的阶段,因此最近也无法进行系统地更新,只会选择一些典型的Demo贴上来,一来是与大家分享,而来也可以作为以后回顾时的参考. 今天介绍一下Cocos2d-x的触摸事件处理,了解Android开发的朋友们知道,Android里会用一个OnClickListener()进行事件监听,而在J2SE中也会有Event类实现专门的监听处理.在Cocos2d-x中,因为是游戏引擎,用户在玩游戏时总是要通过屏幕与游戏进行交互,可想而知触摸事件是主要处理的事件.这里主要讲一下如何为精

cocos2dx学习笔记(2)

昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病

Cocos2dx 学习笔记整理----场景切换

据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. 切换场景的接口如下: ? 1 CCDirector::sharedDirector()->replaceScene(cocos2d:CCScene * pScene); 所以,我们只要把需要切换的场景实例传进去就可以了. ? 1 2 CCScene * pScene = GameMain::sce

Cocos2dx 学习笔记整理----第一个项目

接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启动项目, 切换到解决方案视图, 然后邮件点击解决方案, 选择生成解决方案. 第一次生成根据个人机器性能会消耗大概1-3分钟,呵呵. 但是以后会快很多的. 生成成功的话会在输出窗口显示如下: 一般都会生成成功,但是我生成的时候失败了很多次,后来发现是这个问题:http://www.cnblogs.co

Cocos2dx 学习笔记整理----开发环境搭建

最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且学习了几天之后才发出3.X版本的,版本内容变动比较大. 开发环境 1 jdk 1.6以上 2 python 2.7为宜(创建项目要用的) 3 NDT+Android SDK 4 Cygwin或者MinGW 开发工具 1 Eclipse + CDT + ADT 2 VS2010 3 Sublime T

Cocos2dx 学习笔记整理----在项目中使用图片(初)

cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资源皆是以Resources文件夹为根目录参考的. 然后进入到HelloWorldScene.cpp的init方法的最后面加入以下代码: ? 1 2 3 CCSprite * sprite = CCSprite::create("bl_24.png"); sprite->setPosi

Cocos2dx学习笔记10:cocos2dx序列帧动画(1)

在cocos2dx里是不支持gif动画的,所以我们无法给精灵设置gif格式的图片.但是如果我们想实现动画效果呢?那么我们就要自己通过大量的静态图来组成播放成动画. 在cocos2dx里提供了序列帧动画的概念来实现这个功能,动画由帧组成,每一帧都是一个纹理,我们可以使用一个纹理序列来创建动画. 首先找一张动图的gif图,这里QQ群里最近动图的逗逼图太多,我就随便找了一张,把图片另存到桌面,打开ps软件,把图片拖进去,这样gif图会被拆分许多的图层.我们把图层一个一个图层的保存成png的静态图,命名

Cocos2d-x学习笔记(3)

Cocos2d-x有一个包括全部其它头文件的cocos2d.h,仅仅要在使用时包括这个头文件,就能够使用引擎的全部功能.Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的"actions/CCAction.h"中在文件首尾使用NC_CC_BEGIN和NS_CC_END来将全部类型包括在cocos2d命名空间下.在游戏中使用#define USING_NS_CC using namespace cocos2d定义的宏USING_NS_CC来说明命名空间. 1.构造函数与

cocos2dx学习笔记(4)——VS2010中的中文乱码问题

当你想使用中文时,你是否有这样的一个困惑. 把样例中的HelloWorld改成中文的 "你好,世界!". 然后编译运行,发现居然是个乱码!!! 因为cocos2dx中使用的是UTF-8字符集,而VS中确实ANSI. 所以我们需要对其进行字符集转换. 然后纵里寻它求百度,终于找到了解决方案. 一个函数搞定! #include "cocos2d.h" char* toUTF(const char* strGB2312) { int iLen = MultiByteToW