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(varType, varName, funName) , 同 CC_PROPERTY,实现访问器的方法 。
CC_SYNTHESIZE_READONLY(varType, varName, funName), 同 CC_PROPERTY_READONL, 实现了访问器的方法。
CC_SYNTHESIZE_PASS_BY_REF(varType, varName, funName), 同 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!!!###
 
                    
                     
                    
                 
                    
                 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号