SkillButton技能冷却

作者:网络    软件教程库   2020-05-17

#pragmaonce
#include"cocos2d.h"
using_ns_cc;
classskillbutton:publicnode
{
public:
skillbutton();
~skillbutton();//技能标记
staticskillbutton*createskillbutton(floatskillcd,constchar*normalimage,constchar*clikimage,constchar*maskimage,inttag);
boolinit(floatskillcd,constchar*normalimage,constchar*clikimage,constchar*maskimage,inttag);
voidskillclikcallback(ref*obj);//单击回调
voidskilcooldowncallback(node*node);/**技能冷却完毕回调*/
private:
menuitemimage*_itemskill;//技能按钮
menu*_menuskill;//技能按钮所在menu
sprite*_mask;//蒙板精灵,黑色半透明(这个是为了显示一个冷却计时效果)
progresstimer*_progresstimer;//时间进度条精灵(360度旋转)
//cd时间
cc_synthesize(float,mcdtime,cdtime);
};
#include"skillbutton.h"
skillbutton::skillbutton()
{
_mask=null;
_itemskill=null;
_menuskill=null;
_progresstimer=null;
mcdtime=1.0f;
}
skillbutton::~skillbutton()
{

}
skillbutton*skillbutton::createskillbutton(floatskillcd,constchar*normalimage,constchar*clikimage,constchar*maskimage,inttag)
{
skillbutton*skill=newskillbutton();
if(skillskill-init(skillcd,normalimage,clikimage,maskimage,tag))
{
skill-autorelease();
returnskill;
}
else
{
cc_safe_delete(skill);
skill=null;
}
}
boolskillbutton::init(floatskillcd,constchar*normalimage,constchar*clikimage,constchar*maskimage,inttag)
{
//notice:添加child时要注意上下层
//最下方是ccmenuitemimage其次是模版图片最上方是ccprogresstimer
//添加技能按钮
_itemskill=menuitemimage::create(normalimage,clikimage,cc_callback_1(skillbutton::skillclikcallback,this));
_itemskill-setposition(vec2::zero);
_itemskill-settag(tag);
_menuskill=menu::create(_itemskill,null);
_menuskill-setposition(vec2::zero);
this-addchild(_menuskill);
//添加阴影模版
_mask=sprite::create(maskimage);
_mask-setposition(vec2::zero);
_mask-setvisible(false);
_mask-retain();
this-addchild(_mask);
//添加旋转进度条精灵
autosp=sprite::create(normalimage);
_progresstimer=progresstimer::create(sp);

_progresstimer-setposition(vec2::zero);
_progresstimer-setvisible(false);
this-addchild(_progresstimer);
this-setcdtime(skillcd);
returntrue;
}
voidskillbutton::skillclikcallback(ref*obj)//单击回调
{
//冷却计时,即时状态技能按钮不可点击
_itemskill-setenabled(false);
//模版可见
_mask-setvisible(true);
//设置精灵进度条为顺时针
_progresstimer-setvisible(true);
_progresstimer-settype(progresstimer::type::radial);
//准备一个5秒旋转360度的动画(逐渐覆盖半透模板形成冷却效果;这里进行计时冷却动画的实现和时间控制)
autoaction_progrees_to=progressto::create(mcdtime,100);
autoaction_call_back=callfuncn::create(cc_callback_1(skillbutton::skilcooldowncallback,this));
_progresstimer-runaction(sequence::create(action_progrees_to,action_call_back,null));
menuitemimage*item=(menuitemimage*)obj;
switch(item-gettag())
{
case1:
{
cclog("item1");
}
break;
case2:
{
cclog("item2");
}
break;
case3:
{
cclog("item3");
}
break;
case4:
{
cclog("item4");
}
break;
default:
break;
}
}
voidskillbutton::skilcooldowncallback(node*node)/**技能冷却完毕回调*/
{
//设置蒙板不可见
_mask-setvisible(false);
//进度条技能不可见
_progresstimer-setvisible(false);
//重置进度为0
_progresstimer-setpercentage(0);
//按钮置为可用
_itemskill-setenabled(true);
}


这里调用技能类
#include"operatelayer.h"
#include"skillbutton.h"
operatelayer::operatelayer()
{
}
operatelayer::~operatelayer()
{
}
booloperatelayer::init()
{
if(!layer::init())
{
returnfalse;
}
autowinsize=director::getinstance()-getwinsize();
auto_skill_1=skillbutton::createskillbutton(10,"spell_holy_blessingofstrength.jpg","spell_holy_blessingofstrength.jpg","stencil.png",1);
_skill_1-setposition(vec2(winsize.width-42,50));
this-addchild(_skill_1);
auto_skill_2=skillbutton::createskillbutton(8,"spell_nature_thunderclap.jpg","spell_nature_thunderclap.jpg","stencil.png",2);
_skill_2-setposition(vec2(_skill_1-getpositionx()-74,50));
this-addchild(_skill_2);
auto_skill_3=skillbutton::createskillbutton(5,"spell_fire_flametounge.jpg","spell_fire_flametounge.jpg","stencil.png",3);
_skill_3-setposition(vec2(_skill_2-getpositionx()-74,50));
this-addchild(_skill_3);
auto_skill_4=skillbutton::createskillbutton(3,"spell_holy_auraoflight.jpg","spell_holy_auraoflight.jpg","stencil.png",4);
_skill_4-setposition(vec2(_skill_3-getpositionx()-74,50));
this-addchild(_skill_4);
returntrue;
}


本文出自 “风中的一粒沙” 博客,请务必保留此出处http://libinqi456.blog.51cto.com/4819343/1641220

skillbutton 技能冷却

原文地址:http://libinqi456.blog.51cto.com/4819343/1641220

软件教程库 原文链接:https://www.itjcku.com/9999/1091453.html

阅读全部内容


Tags:技能技巧冷却

返回首页



推荐内容

sles11启用Xmanager

一:开启xmanager要满足一下2个条件:1.安装了gnome桌面环境,并且默认启动级别为52.ip地址为固定ip地址 ...

linux软件管理之rpm、yum

应用程序: 程序:architecturec语言:源代码——》(编译)二进制格式脚本:解释器(二进制程序)源代码——》编 ...

MyEclipse2014下搭建Android开发环境

1、下载android-sdk_r24.1.2-windows.zip,将其解压到一个文件夹中,例如:d:\progra ...

LinuxShell之八转向的用法

一、文件代码“转向”的意思是说:原本应由标准输入(如键盘)读取数据的,改由其它文件读取;原本应把结果显示在标准输出(如屏 ...

Java中有关null的9件事

java中有关 null 的9件事 对于java程序员来说,null是令人头痛的东西。时常会受到空指针异常(np ...

LDAP账号同步和Windows域集成验证

#65279;#65279; paradise.ezla.com.tw/files/article/html/32/32 ...

在同一个sql语句中如何写不同条件的count数量(转)

select sum(case when (t.条件字段=‘00‘) then 1 else 0 ...

详解MessageBox(),MsgBox函数的正确使用

//或者使用chr(13),chr(10)效果一样 msgbox aamp;chr(13)amp;bamp;chr( ...

swift学习笔记5

五、集合 数组 1、泛型 arraylt;类型gt; 2、简化[类型] var myar:arraylt;stringg ...

约在CBD,吃饭

午饭当然是外卖。 cbd上班的同仁们不用约,都去了一间叫大食堂的餐厅。 它在商业街繁华地段的二楼,有1000平米。你不知 ...

headFirst学习笔记之十:状态模式(5.2)

1.如何从状态图得到真正的代码: (1)找出所有状态:没有25分钱,有25分钱,糖果售罄,售出糖果。 (2)创建一个实例 ...

zabbixPHPdatabasessupportoffFail

zabbix初始化检查安装环境不通过: php databases support off fail --未找到所 ...

JS中字符串,数组常见操作

字符串mdash;mdash;mdash;》数组 abc =gt; ["a","b","c"]直接使用split方法 ...

IOS简单的动画自定义方法(旋转、移动、闪烁等)

#define kdegreestoradian(x) (m_pi * (x) /180.0) #define kra ...

swift学习笔记3-4

再牛逼的梦想,也抵不住你傻逼似的坚持! 我跑啊跑啊,为的就是赶上那个被寄予厚望的自己。 三、运算符+表达式 swift允 ...

Trie树初学

#includelt;cstdiogt; #includelt;cstringgt; #includelt;cstdli ...

Android--状态栏高度

干货 classlt;gt; c = null; object obj = null; field field = n ...

//hdu2222//AC自动机初学

// hdu2222 // #includelt;cstdiogt; #includelt;cstringgt; #in ...

黑书笔记

就从p77开始记好了.(稍微扩容) p77 排序. 1.香农信息论 基于比较的排序不可能突破o(nlogn)的复杂度限制 ...

//codeforces471D//kmp初学

// codeforces 471d // #includelt;cstdiogt; #includelt;cstrin ...

搭建基于域名虚拟主机

修改主配置文件 # cd /etc/httpd/conf.d/ # vim vhost.conf lt;virtu ...

Mysql5.6.24zip解压缩版配置及修改默认编码方法

win64位下载地址: http://dev.mysql.com/downloads/file.phpid=456319 ...

图片的预加载和按需加载

图片预加载 lt;!doctype htmlgt; lt;htmlgt; lt;headgt; lt;meta htt ...

iPhone/iPad程序怎么禁止自动休眠

//禁止自动休眠可以通过这一句话搞定:[uiapplication sharedapplication].idletim ...

普林斯顿《算法II》第一周学习笔记UndirectedGraph

普林斯顿的算法课是cousera上评价挺高的一门课,课程的教学语言用的是java,课程中的算法都会被封装成类的形式,对于 ...

headFirst学习笔记之九:迭代器与组合模式(5.1)

1.任务: 大新闻!对象村餐厅和对象村煎饼屋合并了!可以在同一个地方吃早饭和午饭了hohoho(有什么好开森的对象村的小 ...

IOSapplicationWillResignActive

一、挂起当有电话进来或者锁屏,这时你的应用程会挂起,在这时,uiapplicationdelegate委托会收到通知,调 ...

哥我要向前看了

七年前的五一节前的那个周六,我遇到生命中一个重要的人。虽然相处短暂,好梦不长,但是回忆丰满,念念不忘。 七年后的五一节, ...

GoldSmith第二章

uhf:特高频 300m-3000mhz shf:超高频 3g-30g 所有发射与接收的信号都是实信号(因为调制器的振荡 ...

动态规划总结【模板】

最长递增子序列 给定一个序列,找到最长子序列的长度,使得子序列中的所有元素被排序的顺序增加。 1.求最长递增子序列的 ...


本网站部分内容来自互联网,版权归原作者所有,文章内容仅代表原作者个人观点。如有侵权请联系我们删除 电子邮件 itjcku@foxmail.com