自定义Button类:
//
// CustomButton.h
// fun_point_button
//
// Created by Forest on 16/4/28.
//
//
#ifndef __fun_point_button__CustomButton__
#define __fun_point_button__CustomButton__
#include <stdio.h>
#include "cocos2d.h"
USING_NS_CC;
typedef enum {
STANDARD,
CHANGE_IMG,
SHAKE
}ButtonType;
typedef enum {
Began,
Moved,
Ended
}TouchState;
class CustomButton;
typedef void (CCObject::*FUNCTION)(CustomButton*);
#define function_selector(_SEC) (FUNCTION)(&_SEC)
class CustomButton:public CCNode , public CCStandardTouchDelegate {
public:
// 创建标准button
static CustomButton* createButton(const char* normalImage,CCObject* target,FUNCTION callBack);
// 创建换图button
static CustomButton* createChangeImageButton(const char* normalImage,const char* selectedImage,CCObject* target,FUNCTION callBack);
// 创建抖动button
static CustomButton* createShakeButton(const char* normalImage,CCObject* target,FUNCTION callBack);
CC_SYNTHESIZE(int, m_tag, Tag);
CC_SYNTHESIZE(std::string, m_name, Name);
void setButtonType(ButtonType type);
// 开启按钮
void startButton();
// 结束按钮
void stopButton();
private:
CustomButton();
~CustomButton();
void onEnter();
void onExit();
// 触摸方法
virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) ;
virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent) ;
virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) ;
bool initButton(const char* normalImage,CCObject* target,FUNCTION callBack);
bool initChangeImageButton(const char* normalImage,const char* selectedImage,CCObject* target,FUNCTION callBack);
CCSprite* m_normalImage;
CCSprite* m_selectedImage;
ButtonType m_type;
bool m_isInside;
CCPoint m_beganPoint;
CCObject* m_target;
FUNCTION m_callBack;
CCTouch* m_touch;
bool isTouchInside(CCTouch* touch);
// 执行回调
void executeEvent();
// 标准按钮处理
void standardEvent();
// 换图按钮处理
void changeImageEvent(TouchState state);
// 抖动按钮处理
void shakeEvent(TouchState state);
};
#endif /* defined(__fun_point_button__CustomButton__) */
//
// CustomButton.cpp
// fun_point_button
//
// Created by Forest on 16/4/28.
//
//
#include "CustomButton.h"
CustomButton::CustomButton(){
}
CustomButton::~CustomButton(){
}
void CustomButton::onEnter(){
CCNode::onEnter();
}
void CustomButton::onExit(){
CCNode::onExit();
this->stopButton();
}
CustomButton* CustomButton::createButton(const char *normalImage, cocos2d::CCObject *target, FUNCTION callBack){
CustomButton* button = new CustomButton();
if (button && button->initButton(normalImage, target, callBack)) {
button->setButtonType(STANDARD);
button->autorelease();
return button;
}
CC_SAFE_DELETE(button);
return NULL;
}
bool CustomButton::initButton(const