
头文件的定义:
class HelloWorld : public Layer
{
public:
Progresstimer * progresstimer;
MenuItemImage * mi;
Menu *m;
Sprite * sprite;
Size s;
/** 技能按钮点击回调 */
voID skillClickCallBack(Ref* obj);
/** 技能冷却完毕回调*/
voID skillCoolDownCallBack(Node* node);
}文件.CPP中去实现具体的方法和效果:
在init初始化方法中加入:
//正常显示按钮
mi = MenuItemImage::create("skill_1.png","skill_1.png",@H_502_129@CC_CALLBACK_1(HelloWorld::skillClickCallBack,this));
mi->setposition(Vec2(s.wIDth/2,s.height/2));
m = Menu::create(mi,nullptr);
m->setposition(Vec2::ZERO);
this->addChild(m);
然后是回调的方法
/** 技能按钮点击回调 */
voID HelloWorld::skillClickCallBack(Ref* obj)
{
//设置按钮不可用
@H_502_129@mi->setEnabled(false);
//灰模板按钮
@H_502_129@sprite = Sprite::create("stencil.png");
@H_502_129@sprite->setopacity(160);
sprite->setposition(Vec2(s.wIDth/2,s.height/2));
progresstimer = Progresstimer::create(sprite);
progresstimer->setposition(Vec2(s.wIDth/2,s.height/2));
this->addChild(progresstimer);
// 设置精灵进度条为顺时针
progresstimer->setType(Progresstimer::Type::RADIAL);
/** 让进度条执行一个动作 显示出动画效果 逐渐覆盖半透模板形成冷却效果;这里进行计时冷却动画的实现和时间控制*/
auto pto = Progressto::create(2,100);
auto call = CallFuncN::create(this,callfuncN_selector(HelloWorld::skillCoolDownCallBack));
@H_502_129@progresstimer->runAction(Sequence::create(pto,call,NulL));
}
/** 技能冷却完毕回调*/
voID HelloWorld::skillCoolDownCallBack(Node* node)
{
//恢复触摸
@H_502_129@mi->setEnabled(true);
//隐藏
progresstimer->setVisible(false);
}
效果如图所示:
好,这个简单的功能我们就实现 了,代码量非常小,是不是感觉很简单,哈哈
总结以上是内存溢出为你收集整理的Cocos2d-x游戏 技能冷去 时间进度全部内容,希望文章能够帮你解决Cocos2d-x游戏 技能冷去 时间进度所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)