一.命名空间与类名称
Cocos2d-x拥有一个包含了其他头文件“cocos2d.h”,只要包含这个头文件,就可以使用引擎的全部功能。
在游戏中,可以使用引擎提供的另一个宏USING_NS_CC来引用cocos2d命名空间,例如:
#define USING_NS_CC using namespace cocos2d
二.构造函数
在C++中,我们只要调用累的构造函数就可以创建一个对象。但是cocos2d中不适用传统的值类型,所有的对象都创建在堆上,并通过指针引用。
创建cocos2d-x对象通常有两种方法:
1.使用new创建一个未初始化过的空对象,再调用initialized系列的方法来说、初始化,例如:
CCSprite *sprite1 = new CCSprite();
sprite1->initWithFile("HelloWorld.png");
2.使用静态工厂方法直接创建一个对象——create,例如:
CCSprite *sprite2 =CCSprite::("HelloWorld.png");
以上两种方法都可以创建cocos2d-x对象,其主要区别在于内存管理。
1.使用构造函数创建对象时,由于其所有权在调用者这里,我们需要在对象被引用时,使用retain()函数对其进行引用计数加一。而且还需要调用者负责释放对象。
2.使用静态工厂方法创建的对象则不需要调用者关心其引用计数的问题。
三.初始化
在游戏中,我们需要不断创建游戏元素。通常我们可以从cocos2d-x提供的游戏元素类派生出新的类,并在初始化的方法中建立好我们所需的新的元素。为了保证初始化的子类可以被子类重载,需要确保初始化方法声明为虚函数: virtual bool init(); //声明
四.选择器
cocos2d-x中,提供了一系列用于创建选择器语法的宏,这些宏都只有一个参数SELECTOR,表示被指向的类方法,例如:
schedule_selector(SELECTOR)
callfunc_selector(SELECTOR)
callfuncN_selector(SELECTOR)
callfuncND_selector(SELECTOR)
callfunc0_selector(SELECTOR)
menu_selector(SELECTOR)
event_selector(SELECTOR)
compare_selector(SELECTOR)
五.属性
C++中类成员只有方法与字段,没有属性和事件。cocos2d-x规定了属性的访问器的方法名称以get或set为前序,后接属性名。例如:
int tag;
int getTag(){ return tag; }
void setTag(int aTag){ tag = aTag; }
为了避免对每一个属性进行重复性的工作,cocos2d-x提供了一系列宏来方便地创建属性。它们定义在引擎目录下“platform/CCPlatformMacros.h”中。
这些宏只要写在类的定义之中即可。每个宏都有三个参数,分别:varType(属性类型,如果是对象,需改为指针)、varName(属性私有字段名称)、funName(属性访问器名称)。例如:CC_SYNTHESIZE(int, tag, tag)
六、单例(Singleton)
在cocos2d-x引擎中,单例大部分出现在一些系统的资源管理类。保证全局有且只有一个实例对象,保证自动的初始化该对象,使得程序在任何地方都可以访问该对象。
例如,游戏流程控制器CCDirector,就是一个singleton的体现,用户可以静态的方法获取独一无二的实例,不需要自己创建。