展会信息港展会大全

Cocos2d-x技能冷却还要等多久?---之游戏开发《赵云要格斗》(9),cocos2d 一、技能冷却自定义类 二、使用方法 三 、效果
来源:互联网   发布日期:2015-09-28 13:42:02   浏览:2985次  

导读: Cocos2d-x技能冷却还要等多久?---之游戏开发《赵云要格斗》(9),cocos2d 这里是Evankaka的博客,欢迎大家前来讨论与交流~~~~~~ ...

Cocos2d-x技能冷却还要等多久?---之游戏开发《赵云要格斗》(9),cocos2d

这里是Evankaka的博客,欢迎大家前来讨论与交流~~~~~~

转载请注明出处http://blog.csdn.net/evankaka/article/details/42747719

本文将主要来实现游戏开发过程中,技能冷却的实现,一个按钮点一次后,就会有一个冷却时间,得等冷却时间过了之后,你才能再次点击,一般这是实现特殊技能的。在这里,我也自己写了一个类,非常方便,只要把这个类加到你的工程中,加两张图片,就可以实现功能了。

cocos2d-x版本:2.2.5

工程环境:windows7+VS2010

打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开

本文效果:

目录

一、技能冷却自定义类

二、使用方法

三、效果

一、技能冷却自定义类

这里的技能冷却,其实核心就是两个CCsprite,然后一个CCProgressTimer来实现的,下面这是实现的一个代码,可以把图片改改,就可以看到效果

<span style="font-size:18px;"> CCSprite *s=CCSprite::create("skill_back.png");//skill_back.png是较亮的图片

CCProgressTimer *pt=CCProgressTimer::create(s);

pt->setPosition(ccp(200,200));

//转圈的CD实现

pt->setType(cocos2d::CCProgressTimerType(kCCProgressTimerTypeRadial));

//从中间到外的出现

//pt->setType(cocos2d::CCProgressTimerType(kCCProgressTimerTypeBar));

this->addChild(pt,4);

CCProgressTo *t=CCProgressTo::create(8,100);

pt->runAction(CCRepeatForever::create(t));</span>

上面的代码我们肯定不能直接用,为啥,因为它是一个无限播放的过程,而且,我们要让触摸到按钮时,它才技能冷却。所以这里,我就可以封装了一个技能冷却的类,

具体的原理其实就是给精灵添加触摸事件,这是非常关键的!

下面,来看下设计的代码头文件 SkillButton.h

<pre name="code" class="cpp"><span style="font-size:18px;">#include "ControlButton.h"

#include "cocos2d.h"

USING_NS_CC;

class SkillButton:public cocos2d::CCLayer{

public:

//创建冷却技能按钮,create 和 init 是连在一起的,调用create的时候必然会调用init

static SkillButton* create(const char* fore_name,const char* back_name);

//初始化按钮

bool init(const char* fore_name,const char* back_name);

//开始冷却技能

void BeginSkill();

//冷却技能结束后

void EndSkill();

//判断是否在冷却技能

bool IsSkilling;

//开始触摸

virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);

//触摸结束

virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);

///注册触摸代理支持

void registerWithTouchDispatcher();

private:

CCSprite *fore;//fore是较亮的图片

CCSprite *back;//back是较暗的图片

CCProgressTimer *pt;//技能效果

};</span>

然后是实现文件SkillButton.cpp

#include "FlyWord.h"

FlyWord* FlyWord::create(const char *word,const int fontSize,CCPoint begin){

FlyWord* ret = new FlyWord();

//这样写更安全一些

if(ret && ret->init(word,fontSize,begin)){

ret->autorelease();

return ret;

}

CC_SAFE_DELETE(ret);//安全删除

return nullptr;

}

bool FlyWord::init(const char *word,const int fontSize,CCPoint begin){

if(!CCNode::init()){

return false;

}

//初始化

_begin = begin;

m_plabel = CCLabelTTF::create(word,"Marker Felt",fontSize);

//设置颜色

ccColor3B RGB;

RGB.r=255;

RGB.g=0;

RGB.b=0;

m_plabel->setColor(RGB);

this->addChild(m_plabel);

this->setPosition(ccp(begin.x,begin.y));

//初始化完成后就开始飘字了

Flying();

return true;

}

//文字从下到上飘动

void FlyWord::Flying()

{

CCMoveBy* moveact=CCMoveBy::create(0.5f,CCPointMake(0,70));//0.5秒向上移动70

//创建回调动作,文字飘动完后

CCCallFunc* callFunc=CCCallFunc::create(this,callfunc_selector(FlyWord::Flyend));

//创建连续动作

CCActionInterval* act=CCSequence::create(moveact,callFunc,NULL);

//setVisible(true);

this->runAction(act);

}

//文字飘动后删除所有对象

void FlyWord::Flyend()

{

//完成之后把该对象从内存中删除掉

this->removeAllChildrenWithCleanup(true);

this->removeFromParentAndCleanup(true);

}

这里一定在注意添加registerWithTouchDispatcher(),并且将CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false);函数j里面参数设置为false,如果为true表示只有当前层能截取到触摸事件。

二、使用方法

在要用到的地方HelloWorldScene.h,添加头文件#include "SkillButton.h"

定义成员变量:

private:

HRocker* rocker;//摇杆

Hero*hero;///精灵

ControlButton* btn;//按钮控件变量

Map*mymap;//地图

ProgressView *m_pProgressView;//血条

Monster *monster1;//怪物种类1

SkillButton* btn_skill;//技能按钮

然后在实现Init()函数里添加

//添加技能按钮

btn_skill=SkillButton::create("skill_back.png","skill_fore.png");

btn_skill->setPosition(ccp(visibleSize.width-150,60));

this->addChild(btn_skill,2);这里的两张图片是

另外,我换了张攻击按钮图片

三 、效果

下面我们来看看效果

http://www.bkjia.com/Androidjc/944760.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/944760.htmlTechArticleCocos2d-x技能冷却还要等多久?---之游戏开发《赵云要格斗》(9),cocos2d 这里是 Evankaka 的博客,欢迎大家前来讨论与交流~~~~~~ 转...

赞助本站

人工智能实验室

相关热词: android开发 android教程

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港