为单位添加血条

新建了一个类,在构造函数内初始化ccsprite:

HealthBar::HealthBar(void)
{
    _curHP=_totHP=100;
    _spriteFront = CCSprite::create("images/bar_hp_front.png");
    _spriteBg = CCSprite::create("images/bar_hp_bg.PNG");
    _spriteBg->retain();
    
    //设置精灵的位置
    //将锚点设为精灵的左下角
    _spriteFront->setAnchorPoint(ccp(0.0,0.0));
    //将子节点至于父节点的边界上,坐标根据图片手算的
    _spriteFront->setPosition(ccp(3,4));
    _spriteBg->addChild(_spriteFront);
}

HealthBar::~HealthBar(void)
{
    //_spriteFrong为_spriteBG的孩子,也将一起release
    _spriteBg->release();
}

使用两张图片将血条呈现出来。

设置血条大小:

void HealthBar::setScale(float scale)
{
    _spriteBg->setScale(scale);
    //_spriteFront因为是_spriteBg的子节点,所以不必对其进行setscale,否则效果会叠加
}

设置血条的比例:

void HealthBar::setPrecentage(float prec)
{
    /*
        设置血条的比例
    */
    CCSize size = _spriteFront->getContentSize();
    //使用setTextureRect后,sprite会重新渲染,此时图片的位置跟sprite的锚点设置有关。
    _spriteFront->setTextureRect(CCRectMake(0, 0, size.width*prec ,size.height));
}

 

HealthBar继承于CCobject类,于是自己重写了一个create函数,不知道这样写是不是对的:

HealthBar* HealthBar::create()
{
    HealthBar* hb = new HealthBar();
    hb->autorelease();
    return hb;
}

 今天还优化了部分代码,一天就这样过去了,好忧伤...这进度!继续加班~

posted @ 2014-01-07 16:52  phk52  阅读(69)  评论(0)    收藏  举报