cocos2d-x 某项目的开发规范

来源:互联网 发布:网络配置教程 编辑:程序博客网 时间:2024/06/02 07:06

一,命名法:

(1)cocos的类一般以[CC]开头,而工程项目自定义的类,一般以[C+项目名称缩写]开头。

 

(2)类的成员变量要尽可能的少。 如果一个变量可以由其他与它同作用域或更大作用域的变量计算得到,那么不要声明这个变量到更大作用域。

成员变量:  m_

全局变量:  g_

静态变量:  s_

常数变量:  c_

指针:          p

整数:          n

浮点数:      f

 

(3)变量命名问题

(作用域)+类型+(具体类型)+功能描述+(数组标志) ——"()"内为选填

 

举例1

CCArray        *m_pNodeChildrenArray

作用域:m_       类型:p       具体类型:Node        功能描述:Children            数组标志:Array

 

举例2

int   nLoopCount;

类型:n      功能描述:LoopCount           省略作用域 说明是函数内临时变量       省略具体类型标志 因为不是类的对象          省略数组标志 说明不是数组

 

二、资源路径

(1)所有资源及路径必须用小写英文字母+数字的形式来表现,禁止使用大写字母和“_”以外的符号。

 

(2)数据库存放路径为getWritablePath(),所以数据库必须从网络下载。

 

(3)资源查找顺序 getWritablePath()的优先级高于一般资源路径。

 

(4)从网络动态下载的资源只能存放到getWritablePaht()中.

 

(5)不要再getWritablePah()下再增加子目录。

 

(6)就算两个文件不在相同目录下,也不要起重复的文件名。

 

(7)在两个plist中,不要存在相同索引(子文件名)的资源。

 

(8)需要频繁更新的资源,应从网络下载。

 

三,对象直接数据交换

(1) 数据库读写数据 网络读写数据,应该建立"单例"对象储存管理。

 

(2)cocos2d-x的节点采用树形管理。

上级节点需要向下级节点传输信息(指令)时,直接调用下级节点的成员函数。

上级节点向下级节点传输指令,不可以跨级传输。

下级节点向上级节点传输信息(指令)时,采用事先约定的接口函数(CMsgSener与IMsgRecv)

建议约定形式如下:

//消息接收者
class IMsgRecver
{
public:
 virtual void OnRecMsg(UINT uMsgID,void *pDateBuffer,WORD wDateSize){;}
};
//消息发送者
class CMsgSender
{
public:
 IMsgRecver *m_pIMsgRecver;
 void SetMsgRecver(IMsgRecver *pRec){m_pIMsgRecver=pRec;}
 bool SendMsg(UINT uMsgID,void *pDateBuffer=NULL,WORD wDateSize=0){if(!m_pIMsgRecver)return false;m_pIMsgRecver->OnRecMsg(uMsgID,pDateBuffer,wDateSize);return true;}
};

下级向上级传输,允许跨级传输(上级要事先将自己的IMsgRevcer接口交给下级对象)

 

四、关于资源管理

(1)资源(图片与数据库)要在场景切换时做预加载

 

(2)当场景释放时,要释放其相关的资源。

 

(3)在Mac机的XCode上有很好的内存泄露测试工具。

 

(4)autorelease表示这个对象会在上级节点释放时被自动释放。同一个对象autorelease不可以调用两次。判定有无上级节点的一般方法是查看该对象是否"被"addChild加入到其他节点中。

 

(5)如果一个对象没有上级节点,则需要用retain+release的方式来管理。(CCArray的成员对象一般都没有上级节点)

 

(6)字符串尽量用std::string和char szString[]的形式。

 

五、其他细节

1,为了保证Tag不重复,请使用枚举来声明。

2,为了保证ZOrder的稳定,请使用枚举来声明。

3,使用ZOrder和Tag时,不要使用其他类的Tag或ZOrder作为自己成员对象的标记。

4,头文件引用,要填写完整路径,否则在Mac系统上会有问题。

5,如果一个cpp没有被使用到,请将它从路径上删除,否则会引起Mac系统的编译错误。

6,头文件和cpp文件都不要出现文件名重复的情况。

7,图片尽量都采用png格式,音频都采用mp3格式。

8,填写坐标时,要考虑到自动适配问题,所以请使用相对坐标。

9,就算裁剪了层的显示范围,但显示范围之外的按钮依然是可以响应触摸的,所以要做好按钮的禁用/开启工作。

10,多点触控功能只能在Mac系统和真机上测试。

11,使用360手机助手为自己的测试手机安装驱动后,开启调试模式,可以在Eclipse中连接真机进行调试。

 

以上关于cocos2d-x的开发讲了一些规范,有疑问或建议的欢迎交流。

QQ:2813610155

许佳音

常年承接各类cocos2d-x跨平台开发外包以及人员培训工作。