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

来源:互联网 发布:邮编正则表达式 js 编辑:程序博客网 时间:2024/05/25 23:58

不知道为什么,很讨厌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_ZORDER3//按钮状态枚举enum eButtonState{//普通状态STATE_NORMAL,//按下STATE_DOWN,//已选中状态STATE_SELECTED,//禁用该按钮STATE_DISABLE,//STATE_MAX};//资源切割方向enum eImageDir{//水平DIR_HORIZONTAL,//垂直DIR_VERTICAL};//@单图切割换帧 按钮class CMySpriteButton : public CCLayer{private://精灵资源CMySpritem_sprImage;//调用CCNode*m_pTarget;//回调SEL_MenuHandlerm_pfnCallBack;private:CMySpriteButton(void);~CMySpriteButton(void);//接口public://createstatic 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




原创粉丝点击