源码:git@github.com:baidang201/ARPG_Zhaoyun.git@H_502_4@@H_502_4@@H_502_4@
/////////////////////////////////////////////////////////////////搬运@H_502_4@@H_502_4@
转载请@H_502_4@注明出处http://www.jb51.cc/article/p-hdyrdsld-kh.html@H_502_4@@H_502_4@
本篇要讲讲怎么自定义按钮类,并通过这个按钮类的对像来控制精灵的攻击。在看本篇之前最好先看看上一篇@H_502_4@
Cocos2d-x虚拟摇杆控制精灵上下左右运动----之游戏开发《赵云要格斗》(1),要素材和项目代码的把邮箱留下吧,因为这个项目还没弄完,我一直在改。
@H_502_4@
精灵的攻击也是一个动画,只不过,这个动画只播放一次,相当于在界面上加一个按钮,然后你点一次按钮,精灵就播放一次动画。这里之所以自定义按钮类是为了后头方便能添加多个按钮来实现英雄不同的攻击方式。以及技能冷却等。@H_502_4@
@H_502_4@
cocos2d-x版本:2.2.5@H_502_4@@H_502_4@
工程环境:windows7+VS2010@H_502_4@
@H_502_4@ 打开方式:将工程放在cocos2d-x安装目录下的project文件夹下用VS打开@H_502_4@ @H_502_4@目录@H_502_4@
二、精灵攻击动画和结束判断
@H_502_4@@H_502_4@
三、自定义按钮控制精灵
@H_502_4@@H_502_4@
一、自定义按钮类
按钮可以用COCOS2D-X自带的,想着方便一点,我就自己封装了一个按钮类MyControlButton,在里面添加一个@H_502_4@//按钮控件变量ControlButton* controlBtn;并对其添加相应的回调事件即可实现我们自己封装的按钮类@H_502_4@
#ifndef@H_502_4@ @H_502_4@__ControlButton_H__
#define@H_502_4@ @H_502_4@__ControlButton_H__@H_502_4@
#include@H_502_4@ @H_502_4@"cocos2d.h"@H_502_4@
#include@H_502_4@ @H_502_4@"cocos-ext.h"@H_502_4@
#include@H_502_4@ @H_502_4@"ui/UIScale9Sprite.h"@H_502_4@
USING_NS_CC@H_502_4@;
USING_NS_CC_EXT@H_502_4@; @H_502_4@
//用于标识当前按钮的状态@H_502_4@
typedef@H_502_4@ @H_502_4@enum@H_502_4@{
@H_502_4@touch_begin@H_502_4@,
@H_502_4@touch_down@H_502_4@,
@H_502_4@touch_up@H_502_4@,
}tagForTouch@H_502_4@;
class@H_502_4@ @H_502_4@MyControlButton@H_502_4@ @H_502_4@:public@H_502_4@ @H_502_4@CCNode@H_502_4@
{
public@H_502_4@:
@H_502_4@MyControlButton@H_502_4@();
@H_502_4@~MyControlButton@H_502_4@();
@H_502_4@CREATE_FUNC@H_502_4@(MyControlButton@H_502_4@);
@H_502_4@//创建按钮,其中name_png为按钮的背景图片,button_title为按钮图片上要显示的文字,num为文字的透明度0-100,0为透明@H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@CreateButton(const@H_502_4@ @H_502_4@char@H_502_4@* @H_502_4@name_png,const@H_502_4@ @H_502_4@char@H_502_4@* @H_502_4@button_title="0"@H_502_4@,unsigned@H_502_4@ @H_502_4@int@H_502_4@ @H_502_4@num=0@H_502_4@);
@H_502_4@//绑写按钮事件@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@BindButtonEven();
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮时,则触发一次@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchDownAction(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发一次@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchDragEnter(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发一次@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchDragExit(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标进入按钮范围,则触发,只要达到条件,就不断触发@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchDragInside(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标离开按钮范围,则触发,只要达到条件,就不断触发@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchDragOutside(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围内,则触发一次@H_502_4@ @H_502_4@*/@H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchUpInside(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@当鼠标处于按下并曾经点中按钮的状态下,鼠标松开且在按钮范围外,则触发一次@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchUpOutside(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@/*@H_502_4@ @H_502_4@暂时没有发现能用鼠标触发这个事件的操作,看了注释,应该是由其它事件中断按钮事件而触发的@H_502_4@ @H_502_4@*/@H_502_4@ @H_502_4@
@H_502_4@void@H_502_4@ @H_502_4@touchCancel(Ref@H_502_4@* @H_502_4@pSender, @H_502_4@Control@H_502_4@::EventType@H_502_4@ @H_502_4@event);
@H_502_4@//是否按下按钮@H_502_4@
@H_502_4@bool@H_502_4@ @H_502_4@isTouch@H_502_4@;
private@H_502_4@:
@H_502_4@//按钮控件变量@H_502_4@
@H_502_4@ControlButton@H_502_4@* @H_502_4@controlBtn@H_502_4@;
};
#endif@H_502_4@ @H_502_4@
ControlButton.cpp文件@H_502_4@