AKever

导航

Cocos2dx(1) Cocos2dx 关于宏的一些事

有这种宏,那种宏,各种各样的宏:

NS_CC_BEGIN cocos2d命名空间开始

NS_CC_END  cocos2d命名空间结束

USING_NS_CC 声明cocos2d命名空间

USING_NS_CC_EXI 声明extensions命名空间

 

==PROPERTY===========peace line========================================================

PROPERTY:只定义,无实现

CC_PROPERTY(varType, varName, funName) 定义一个属性及其访问器,无实现,既是表明get##funName和set##funName函数的定义,函数定义需要自行实现。

CC_PROPERTY_READONLY(varType, varName, funName) 定义一个属性,只包含get访问器,没有实现。

CC_PROPERTY_PASS_BY_REF(varType, varName, funName) 类似CC_PROPERTY,定义一个属性,访问器使用引用类型传递参数,没有实现,通常用于结构体类型。

CC_PROPERTY_READONLY_PASS_BY_REF(varType, varName, funName) 类似CC_PROPERTY_READONLY,定义一个属性,只包含get访问器,且使用引用类型传递参数,没有实现。

==SYNTHESIZE==============peace line==================================================================

SYNTHESIZE:定义,实现

CC_SYNTHESIZE(varTypevarNamefunName) ,  同 CC_PROPERTY,实现访问器的方法 。

CC_SYNTHESIZE_READONLY(varType, varName, funName),   同 CC_PROPERTY_READONL, 实现了访问器的方法。

CC_SYNTHESIZE_PASS_BY_REF(varTypevarNamefunName),  同 CC_PROPERTY_PASS_BY_REF,实现了访问器的方法。

CC_SYNTHESIZE_READONLY_PASS_BY_REF(varType, varName, funName),  同 CC_PROPERTY_READONLY_PASS_BY_REF,实现了访问器的方法。

CC_SYNTHESIZE_RETAIN(),  同CC_PROPERTY, 实现了访问器的方法。用于派生只CCObject的类型,访问采取Cocos2d-x的内存管理机制自动维护对象的引用计数。

 

例子:

int tag;
int getTag() { retrun tag; }
void setTag(int aTag) { tag = aTag; }

相当于:

CC_SYNTHESIZE(int, tag, Tag);

 

 ==DELETE==============peace line======================================================

CC_SAFE_DELETE(p)使用 delete 操作符删除一个 C++对象p,如果 p 为NULL,则不进行操作

CC_SAFE_DELETE_ARRAY(p), 使用 delete[]操作符删除一个C++数组 p, 如果 p 为NULL,则不进行操作

CC_SAFE_FREE(p) , 使用 free()函数删除p,如果p 为 NULL,则不进行操作

CC_SAFE_RELEASE(p)使用 release()方法释放 Cocos2d-x 对象p的一次引用,如果 p 为NULL,则不进行操作

CC_SAFE_RELEASE_NULL(p)使用 release()方法释放 Cocos2d-x 对象p 的 一次引用,再把 p 赋值为NULL。如果 p 已 经为 NULL,则不进行操作

 CC_SAFE_RETAIN(p)使用 reatin()方法增加Cocos2d-x 对象p 的一 次引用。如果 p 为NULL,则不进行操作

 

前端运行平台定义

CC_TARGET_PLATFORM

CC_PLATFORM_WIN32
CC_PLATFORM_WINRT
CC_PLATFORM_WP8
CC_PLATFORM_WP8
CC_PLATFORM_ANDROID
CC_PLATFORM_BADA

应用示例

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
    CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
    CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);CC_PLATFORM_IOS
#endif
#endif
}

 C++宏操作符:#if, #else, #elif, #endif, #ifndef, #define, #endif

###end!!!###

posted on 2014-01-16 16:58  AKever  阅读(286)  评论(0)    收藏  举报