Cocos2d-x游戏 技能冷去 时间进度
头文件的定义: 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",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) { //设置按钮不可用 mi->setEnabled(false);
//灰模板按钮 sprite = Sprite::create("stencil.png"); 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)); progressTimer->runAction(Sequence::create(pto,call,NULL));
}
/** 技能冷却完毕回调*/ void HelloWorld::skillCoolDownCallBack(Node* node) { //恢复触摸 mi->setEnabled(true); //隐藏 progressTimer->setVisible(false);
}
效果如图所示:
好,这个简单的功能我们就实现 了,代码量非常小,是不是感觉很简单,哈哈 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |