1.什么是断言?

断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。如果是Release版本,编译器忽略所有的断言(看成空语句)。

CC_ASSERT(条件)
#define CC_ASSERT(cond) assert(cond)

CCAsert(条件,"打印信息")
#if COCOS2D_DEBUG > 0extern bool CC_DLL cc_assert_script_compatible(const char *msg);#define CCAssert(cond, msg) do {                              \      if (!(cond)) {                                          \        if (!cc_assert_script_compatible(msg) && strlen(msg)) \          cocos2d::CCLog("Assert failed: %s", msg);           \        CC_ASSERT(cond);                                      \      } \    } while (0)#else#define CCAssert(cond, msg) ((void)(cond))#endif

例子:

//addChild方法,如果要添加的子节点为空,就停住了,并打印信息“Argument must be non-nil”void CCNode::addChild(CCNode *child){    //不为空不成立,就是为空啦    CCAssert( child != NULL, "Argument must be non-nil");    this->addChild(child, child->m_nZOrder, child->m_nTag);}

2.函数回调,主要有三种方式(无参数,一个参数,二个参数)

void call1();void call2(CCNode* node);void call3(CCNode* node,void* data);

实现:

void HelloWorld::call1(){                                                   CCLog("call1");                                               }void HelloWorld::call2(CCNode* node){                                                   CCLog("call2");}void HelloWorld::call3(CCNode* node,void* data){                                                   CCLog("call3");                                                   CCSprite* sp =(CCSprite*) data;    sp->setScale(2.0f);                                               }

函数回调:

CCSprite* sp = CCSprite::create("CloseNormal.png");    sp->setPosition(CCPointZero);    addChild(sp);    CCJumpTo* jump = CCJumpTo::create(1, ccp(400,20), 60, 8);// 无参    CCCallFunc* fun1 = CCCallFunc::create(this, callfunc_selector(HelloWorld::call1));//一个参数    CCCallFunc* fun2 = CCCallFuncN::create(this, callfuncN_selector(HelloWorld::call2));//两个参数    CCCallFunc* fun3 = CCCallFuncND::create(this, callfuncND_selector(HelloWorld::call3),(void*)sp);    CCSequence* seq = CCSequence::create(jump,fun1,fun2,fun3,0);                                  sp->runAction(seq);

3.CCProgressTo使用:

//TestCpp中的例子                CCSprite* sp = CCSprite::create("CloseNormal.png");    sp->setPosition(CCPointZero);    addChild(sp);                CCSize s = CCDirector::sharedDirector()->getWinSize();    CCProgressTo *to1 = CCProgressTo::create(2, 100);    CCProgressTimer *left = CCProgressTimer::create(sp);    left->setType( kCCProgressTimerTypeRadial );//圆形进度    addChild(left);    left->setPosition(ccp(100, s.height/2));    left->runAction( CCRepeatForever::create(to1));

哈哈,一天一点进步,加油