1.什么是断言?
断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。如果是Release版本,编译器忽略所有的断言(看成空语句)。
#define CC_ASSERT(cond) assert(cond)
#if COCOS2D_DEBUG > 0
extern 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));
哈哈,一天一点进步,加油
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。