cocos2dx 创建血条框和技能冷却效果

cocos2dx 创建血条框和技能cd样式,用到了同一个类ProgressTimer,这个类可以创建条式的血条和圆形的cd样式,从cocos2dx 3.0源码中可以找到Type枚举类型,如下代码:

 /** Types of progress
     @since v0.99.1
     */
    enum class Type
    {
        /// Radial Counter-Clockwise
        RADIAL,
        /// Bar
        BAR,
    };

创建血条框只要setType为BAR即可,同理设置技能冷却样式我们setType为RADIAL。以下为创建血条框的简单代码:

auto bloodBg = Sprite::create(p_bloodline);
	bloodBg->setPosition(Point(npc->getContentSize().width/2,npc->getContentSize().height-10));
	npc->addChild(bloodBg,1);

	auto bloodBlue = Sprite::create(p_bloodlinehong);
	//血条框
	bloodbar = ProgressTimer::create(bloodBlue);
	bloodbar->setType(ProgressTimer::Type::BAR);
	bloodbar->setPercentage(99.99f);
	bloodbar->setBarChangeRate(Point(1,0));
	bloodbar->setMidpoint(Point(0,0.5));
	bloodbar->setPosition(Point(bloodBg->getContentSize().width/2,bloodBg->getContentSize().height/2));
	bloodBg->addChild(bloodbar);

上述代码创建了一个血条框和血条,血条增减用ProgressFromTo 或者ProgressTo来完成。来看下效果:

cocos2dx 创建血条框和技能冷却效果_第1张图片

技能冷却代码如下:

/************************************************************************/
/*使技能cd                                                              */
/************************************************************************/
void CharpterOne::makeSkillCD(__String filePath,MenuItem * SkillSp)
{
	//设置按钮不可用
	SkillSp->setEnabled(false);
	//创建技能cd样式
	auto sp = Sprite::create(filePath.getCString());
	sp->setOpacity(80);
	sp->setColor(Color3B(0,0,0));
	auto cd = ProgressTimer::create(sp);
	cd->setType(ProgressTimer::Type::RADIAL);
	cd->setPosition(SkillSp->getPosition());
	cd->setPercentage(99.99f);	
	this->addChild(cd,1000);
	//技能冷却动画
	auto progressto = ProgressTo::create(8,0);
	//冷却完成之后的回调,销毁对象,同时使技能按钮可用
	auto callfunn = CallFuncN::create([=](Node * n){
		cd->removeFromParentAndCleanup(true);
		sp->removeFromParentAndCleanup(true);
		SkillSp->setEnabled(true);
	});

	cd->runAction(Sequence::create(progressto,callfunn,NULL));
}

效果如下:


开源的代码真是好啊,学习起来很方便。


你可能感兴趣的:(cocos2dx,3.0整理收集)