1. 程式人生 > >cocos2d-x 如何使用CCProgressTimer作為血條,實現跟隨怪物進行移動,自動掉血,然後死亡。

cocos2d-x 如何使用CCProgressTimer作為血條,實現跟隨怪物進行移動,自動掉血,然後死亡。

1、如何使用CCProgressTimer  2、如何跟隨怪物  3、如何掉血和死亡  4、結構層次。

 //注意加紅色部分

樣例程式碼如下:

怪物的定義:

class Enemy :
public CCSprite
{
public:
    Enemy(CCPoint p, CCString* type, int itemId);
~Enemy(void);


    CCSprite* enemySprite;

怪物放入layer進行顯示:

        gameLayer->addChild(this->enemySprite,KZENEMY);

血條在建立enemy時一併建立,並作為其子:

        Enemy* enemy = new Enemy(startPosition,enemytype, ((int)(dt*1000))%30);
        //加入血條背景
        CCProgressTimer* progressTimeHPBackGround = CCProgressTimer::create(CCSprite::create("hpbackground.png"));
        progressTimeHPBackGround->setPosition(ccp(0,32));
        progressTimeHPBackGround->setAnchorPoint(ccp(0,0));
        progressTimeHPBackGround->setPercentage(100);


        //加入血條背景
        CCProgressTimer* progressTimeHP = CCProgressTimer::create(CCSprite::create("hp.png"));
        progressTimeHP->setPosition(ccp(0,sGlobal->tileBlockSize));//下面的配置參加testcpp的樣例程式碼
        progressTimeHP->setAnchorPoint(ccp(0,0)); //預設是中間,要設定左下角
        progressTimeHP->setPercentage(100); //初始的百分比
        progressTimeHP->setMidpoint(ccp(0, 1)); //設定中點位置,預設是四周向重點變化。現在把重點設定為左邊(縱向居中),使血從右向左減少
        progressTimeHP->setBarChangeRate(ccp(1, 0));//暫時不知道什麼用
        progressTimeHP->setType(kCCProgressTimerTypeBar);//暫時不知道什麼用

        enemy->enemySprite

->addChild(progressTimeHPBackGround,KZENEMY);                     
        enemy->enemySprite->addChild(progressTimeHP,KZENEMYHP,TENEMYHP);

跟隨移動、掉血和死亡:

            pEnemy->enemySprite->setPosition(nextP);
            CCProgressTimer* cct = (CCProgressTimer*)pEnemy->enemySprite->getChildByTag(TENEMYHP);
            int cp = cct->getPercentage();
            if (cp > 0)
            {
                cct->setPercentage(--cp);//掉血
            }
            else
            {
                pEnemy->enemySprite->setVisible(false);//設定不可見
                finishedEnemy->addObject(pEnemy);  //放入死亡陣列,等待delete記憶體
            }
        

效果圖: