91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2d-x 斷言和函數回調

發布時間:2020-08-02 15:26:24 來源:網絡 閱讀:1363 作者:VincentTung 欄目:游戲開發

1.什么是斷言?

斷言assert 是僅在Debug 版本起作用的宏,它用于檢查“不應該”發生的情況。如果是Release版本,編譯器忽略所有的斷言(看成空語句)。

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


CCAsert(條件,"打印信息")
#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));

哈哈,一天一點進步,加油

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄大仙区| 双峰县| 宁海县| 北海市| 威远县| 唐山市| 富平县| 西贡区| 汉中市| 盐亭县| 黔西县| 兴文县| 永春县| 荃湾区| 广元市| 土默特右旗| 西乌珠穆沁旗| 济源市| 德令哈市| 白河县| 哈尔滨市| 平远县| 方山县| 周口市| 嘉荫县| 宁远县| 喀喇| 曲周县| 维西| 尚志市| 嘉善县| 博白县| 孟州市| 常宁市| 宁津县| 阆中市| 宜黄县| 镇江市| 怀来县| 安西县| 金华市|