您的位置:首页 > 移动开发 > Cocos引擎

Cocos2dx项目启程二 之 封装属于我的按钮类

2013-09-03 17:20 169 查看
不知道为什么,很讨厌cocos2dx的 各菜单类,比如按钮:如果一张图片上就已经有按钮的几个状态了,我还是要创建多张资源图片,

最起码要指定这张图片上哪块区域是这个普通状态,哪块区域是那个选中状态。。。。于是,在这里,做了点加工,在一张图片上

如果有几个按钮状态,来实现多种按钮状态:在用我自己的按钮类的话只只需要 1 个函数就可以实现:

CMySpriteButton *pGameMainMenuBt= CMySpriteButton::create(“bt.png”,DIR_VERTICAL,2,this, menu_selector(SceneManger::menuCallback));//

#ifndef MY_SPRITE_BUTTON_H
#define MY_SPRITE_BUTTON_H

#include "common.h"
#include "MySprite.h"

#define MYBUTTON_ZORDER				3

//按钮状态枚举
enum eButtonState
{
//普通状态
STATE_NORMAL,
//按下
STATE_DOWN,
//已选中状态
STATE_SELECTED,
//禁用该按钮
STATE_DISABLE,
//
STATE_MAX
};
//资源切割方向
enum eImageDir
{
//水平
DIR_HORIZONTAL,
//垂直
DIR_VERTICAL
};

//@单图切割换帧 按钮
class CMySpriteButton : public CCLayer
{
private:
//精灵资源
CMySprite				m_sprImage;
//调用
CCNode*					m_pTarget;
//回调
SEL_MenuHandler			m_pfnCallBack;

private:
CMySpriteButton(void);
~CMySpriteButton(void);

//接口
public:
//create
static CMySpriteButton* create( const char* pszResourceName, eImageDir eDir, unsigned char byStates, CCNode* pTarget, SEL_MenuHandler pfnCallBack );

void setPositionX( float x );
void setPositionY( float y );
void setPosition(float x, float y);
float getPositionY();
float getPositionX();
cocos2d::CCPoint& getPosition();

bool init( const char* pszResourceName, eImageDir eDir, unsigned char byStates, CCNode* pTarget, SEL_MenuHandler pfnCallBack );

void SetState(eButtonState eState);

//重载
protected:
void onEnter();
bool ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent );
void ccTouchEnded( CCTouch *pTouch, CCEvent *pEvent );
void ccTouchesBegan( CCSet *pTouches, CCEvent *pEvent );
void ccTouchesEnded( CCSet *pTouches, CCEvent *pEvent );

};

#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: