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

19 篇文章 0 订阅
12 篇文章 0 订阅

不知道为什么,很讨厌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




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值