Cocos2d-X 3.4版-技能冷却按钮《赵云要格斗》

Cocos2d-X 3.4版-技能冷却按钮《赵云要格斗》,第1张

概述这里为需要注意的是开启触屏的方法,以及NotificationCenter的用法有所改变。 这个类中我改动了一些代码,比如说SkellEnd时候没有就将ProgressTimer设置为 setVisible(false),而是将它的percent设置为0,然后再冷却结束后又可以冲percent0开始播放动画。 SkillButton.h //// SkillButton.h// Fight

这里为需要注意的是开启触屏的方法,以及NotificationCenter的用法有所改变。

这个类中我改动了一些代码,比如说SkellEnd时候没有就将Progresstimer设置为

setVisible(false),而是将它的percent设置为0,然后再冷却结束后又可以冲percent0开始播放动画。

Skillbutton.h

////  Skillbutton.h//  fight////  Created by Cytzrs on 15/2/4.////#ifndef __fight__Skillbutton__#define __fight__Skillbutton__#include <iostream>#include "cocos2d.h"#include "cocos-ext.h"USING_NS_CC;USING_NS_CC_EXT;class Skillbutton:public cocos2d::Layer{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 ontouchBegan(touch *ptouch,Event *pEvent);	//触摸结束	virtual voID ontouchended(touch *ptouch,Event *pEvent);        private:	Sprite *fore;//fore是较亮的图片	Sprite *back;//back是较暗的图片	Progresstimer *pt;//技能效果	    };#endif /* defined(__fight__Skillbutton__) */

Skillbutton.cpp
////  Skillbutton.cpp//  fight////  Created by Cytzrs on 15/2/4.////#include "Skillbutton.h"Skillbutton* Skillbutton::create(const char* fore_name,const char* back_name){    	Skillbutton* ret = new Skillbutton();    	//这样写更安全一些	if(ret&&ret->init(fore_name,back_name)){		ret->autorelease();		return ret;	}    	CC_SAFE_DELETE(ret);//安全删除	return nullptr;}bool Skillbutton::init(const char* fore_name,const char* back_name){	if(!Layer::init()){		return false;	}    	fore=Sprite::create(fore_name);//fore_name是较亮的图片	this->addChild(fore,1);    	back=Sprite::create(back_name);//back_name是较暗的图片	pt=Progresstimer::create(back);	this->addChild(pt,2);        auto Listener = EventListenertouchOneByOne::create();    Listener->ontouchBegan = CC_CALLBACK_2(Skillbutton::ontouchBegan,this);    Listener->ontouchended = CC_CALLBACK_2(Skillbutton::ontouchended,this);    	Director::getInstance()->getEventdispatcher()->addEventListenerWithSceneGraPHPriority(Listener,this);	return true;}//开始冷却技能voID Skillbutton::BeginSkill(){	//转圈的CD实现//	pt->setType(cocos2d::ProgresstimerType(kCCProgresstimerTypeRadial));    pt->setType(Progresstimer::Type::RADIAL);	Progressto *waittime=Progressto::create(8,100);	//创建回调动作,技能冷却结束后调用EndSkill()	CallFunc* callFunc=CCCallFunc::create(CC_CALLBACK_0(Skillbutton::EndSkill,this));	//创建连续动作	auto act = Sequence::create(waittime,callFunc,NulL);	pt->setVisible(true);	IsSkilling=true;	pt->runAction(act);    }//冷却技能结束后voID Skillbutton::EndSkill(){//	pt->setVisible(false);    pt->setPercentage(0.0f);	IsSkilling=false;    //	NotificationCenter::sharednotificationCenter()->postNotification("jian_xue");    NotificationCenter::getInstance()->postNotification("jian_xue");}//判断是否点击的范围为精灵 如果是则执行动作voID Skillbutton::ontouchended(touch *ptouch,Event *pEvent){	if(IsSkilling)		return;	//判断是否点击在精灵上面	Point touchPoint = converttouchToNodeSpace(ptouch);	if(fore->boundingBox().containsPoint(touchPoint))	{		BeginSkill();        log("NotificationCenter::getInstance()->postNotification(jian_xue);");	}}//返回true表示支持触摸 返回false表示忽略bool Skillbutton::ontouchBegan(touch *ptouch,Event *pEvent){	return true;}
工程源码 PS:多写博客,帮助自己,方便他人! 总结

以上是内存溢出为你收集整理的Cocos2d-X 3.4版-技能冷却按钮《赵云要格斗》全部内容,希望文章能够帮你解决Cocos2d-X 3.4版-技能冷却按钮《赵云要格斗》所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1038639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存