首页 > 数据库 > mysql教程 > Cocos2d-x学习笔记(3)

Cocos2d-x学习笔记(3)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 15:01:13
原创
1141 人浏览过

Cocos2d-x有一个包含所有其他头文件的cocos2d.h,只要在使用时包含这个头文件,就可以使用引擎的全部功能。Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的“actions/CCAction.h”中在文件首尾使用NC_CC_BEGIN和NS_CC_END来将所有类型包含在cocos2d命

        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、构造函数与初始化

        Cocos2d-x不使用传统的值类型,所有的对象都创建在堆上,然后通过指针引用,创建Cocos2d-x对象主要有两种方法:(1)使用new创造未初始化的对象,然后调用init系列方法来初始化。(2)使用静态的工厂方法直接创建一个对象。

        第一种方法:

       (1)使用new操作符调用构造函数,创建一个没有初始化的空对象

       (2)选择合适的初始化方法,并调用它来初始化对象

        Cocos2d-x的初始化方法都以init()作为前缀,返回一个bool值,代表是否成功。例如:

        CCSprite* sprite1 = new CCSprite();

        sprite1->initWithFile(“HelloWorld.png”);

        CCSprite共提供8个初始化方法。

       第二种方法

       (1)静态工程方法是类提供的静态函数,只要提供必要的参数,就会返回一个完成了初始化的对象,通常init系列的初始化方法都会有对应的工厂方法。例如:

        CCSprite* sprite2 = CCSprite::spriteWithFile(“HelloWorld.png”);//Cocos2d-x 2.0以前版本中的方法

        CCSprite* sprite3 = CCSprite::create(“HelloWorld.png”);///Cocos2d-x 2.0之后版本中的方法

        2、选择器

        选择器是类似于C++中的类函数指针的机制,下面是Cocos2d-x提供的创建选择器语法的宏,用来创建函数指针,这些宏只有一个参数SELECTOR,表示被指向的类方法

        schedule_selector(SELECTOR)

        callfunc_selector(SELECTOR)

        callfuncN_selector(SELECTOR)

        callfuncND_selector(SELECTOR)

        menu_selector(SELECTOR)

        event_selector(SELECTOR)

        compare_selector(SELECTOR)

        3、属性:Cocos2d-x规定了属性访问器的方法名称以get或set为前缀,后接属性名,如CCNode中节点标记属性Tag属性,访问器分别为getTag()和setTag(int aTag)其原理如下:      

int tag;
int getTag() {return tag;}
void setTag() {tag = aTag;}
登录后复制
        Cocos2d-x中与属性相关的宏共有9个,只需要把宏写在类的定义中即可,每个宏有3个参数:(1)varType,属性类型,如果属性类型时对象,需要写成指针的形式。(2)varName,属性的私有字段名称。(3)funName,属性的访问器名称,也就是紧接在get或set后面的部分。如:CC_SYNTHESIZE(int,tag,Tag)

        

Cocos2d-x与属性有关的宏
描述
CC_PROPERTY 定义一个属性及其访问器,没有实现,常用于简单的值类型
CC_PROPERTY_READONLY 定义一个属性,只包含get访问器,没有实现
CC_PROPERTY_PASS_BY_REF 定义一个属性,访问器使用引用类型传递参数,没有实现,通常用于结构体
CC_PROPERTY_READONLY_PASS_BY_REF 定义一个属性,只包含get访问器,且使用引用类型传递参数,没有实现。
CC_SYNTHESIZE 同CC_PROPERTY,实现了访问器方法
CC_SYNTHESIZE_READONLY 同CC_PROPERTY_READONLY,实现了访问器方法
CC_SYNTHESIZE_READONLY_PASS_BY_REF 同CC_PROPERTY_READONLY_PASS_BY_REF,实现了访问器方法
CC_SYNTHESIZE_PASS_BY_REF 同CC_PROPERTY_PASS_BY_REF,实现了访问器方法
CC_SYNTHESIZE_RETAIN 同CC_PROPERTY,实现了访问器方法。用于派生自CCObject的类型,
访问器采用Cocos2d-x的内存管理机制自动维护对象的引用计数。

        4、单例:Cocos2d-x的流程控制器CCDirector是一个独一无二的控制器,用于切换游戏的场景。这种情况下使用单例的技巧。如下代码:

static CCDisplayLinkDirector s_SharedDirector;
CCDirector* CCDirector::sharedDirector(void)
{
    static bool s_bFirstUseDirector = true;
    if(s_bFirstUseDirector)
    {
        s_bFirstUseDirector = false;
        s_bFirstUseDirector.init();
    }
    return &s_SharedDirector;
}
登录后复制
可以放心,CCDirector维护了一个静态的CCDirector实例,在第一次使用前初始化,为了访问CCDirector控制器,使用如下代码:
CCDirector::sharedDirector()->replaceScene(newScene);
登录后复制
获取CCDirector的唯一实例,调用replaceScene切换到新场景。


相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
cocos2d-x - 在MVC模式中如何设置计时器?
来自于 1970-01-01 08:00:00
0
0
0
c++ - cocos2d没法下载?求助!!!
来自于 1970-01-01 08:00:00
0
0
0
nginx - X-Forwarded-For 和 X-Real-IP 的区别?
来自于 1970-01-01 08:00:00
0
0
0
关于本节课中 x-=y 的问题
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板