cocos2d-x中常用的宏

说在前面:以下是基于cocos2d-2.0-x-2.0.3作的总结

cocos2d为方便开发者,提供了一系列的宏。根据使用场合,它们分为:

与节点属性(property)相关的

CC_PROPERTY_READONLY
CC_PROPERTY_READONLY_PASS_BY_REF
CC_PROPERTY
CC_PROPERTY_PASS_BY_REF
CC_SYNTHESIZE_READONLY
CC_SYNTHESIZE_READONLY_PASS_BY_REF
CC_SYNTHESIZE
CC_SYNTHESIZE_PASS_BY_REF
CC_SYNTHESIZE_RETAIN

具体定义见CCPlatformMacros.h。这些主要是为了模拟objective-C下的@property, readonly, retain, @synthesize等关键字。

与命名空间(namespace)相关

NS_CC_BEGIN
NS_CC_END
USING_NS_CC
具体定义见CCPlatformMacros.h。在扩展cocos2d时,可以参考这种定义方式来定义自己的命名空间。另外,在实现文件(cpp)中可以使用USING_NS_CC。

与节点的创建方法(node, create)相关

CREATE_FUNC
NODE_FUNC
具体定义见CCPlatformMacros.h。在扩展cocos2d的节点时,可以使用这两上宏方便地提供创建方法。

与内存管理相关

CC_SAFE_DELETE
CC_SAFE_DELETE_ARRAY
CC_SAFE_FREE
CC_SAFE_RELEASE
CC_SAFE_RELEASE_NULL
CC_SAFE_RETAIN
在代码中使用这些宏,可以减少敲键盘的次数,从而提高编写效率。

日志

CCLOG
CCLOGERROR
CCLOGINFO
CCLOGWARN
具体定义见CCPlatformMacros.h。 cocos2d当前版本中,日志是打印到控制台的,而且在执行可执行程序的情况下,一般是看不到日志的。只有在调试状态下才能看到日志。对于visual studio,调试状态下日志是输出到“输出(output)”标签(tab)页的。

断言

CC_BREAK_IF
CC_ASSERT
CCAssert

其中CC_BREAK_IF是在CCPlatformMacros.h中定义的,它用在循环中的条件判断。在cocos2d源码中,CC_BREAK_IF有一个使用非常频繁的场合,就是在do{}while(0)中。这个使用语句块的作用还是挺大的。根据GOOGLE编程规范,为了减少代码层次,条件判断应该先进行,不满足则跳过后面代码。跳过有两种方式,一种是return,另一种是break。前一种方式下,后面的全部代码都不能得到执行;后一种方式必须放在循环或者swich语句块中。如果使用do{}while(0)则可以解决第一种方式后面的代码得不到执行的问题。

CCAssert定义在ccMacros.h中,它是对CC_ASSERT的封装。CCASSERT在不同实现下有不同的定义方式,因为我们在使用断言时,应使用CCAssert而不是CC_ASSERT。cocos2d的源代码中也是如此。

与数学相关

CCRANDOM_MINUS1_1
CCRANDOM_0_1
CC_DEGREES_TO_RADIANS
CC_RADIANS_TO_DEGREES
具体定义见ccMacros.h。产生随机数与弧度与角度的转换。

点(CCPoint)相关

ccp

具体定义在CCPointExtension.h中。此文件中还定义了很多与点运算相关的API。需要作点运算时,先检查此处是否已经定义过了。

你可能感兴趣的:(宏,macro,coco2d)