Cocos2dx项目启程二 之 封装属于小弟我的按钮类
Cocos2dx项目启程二 之 封装属于我的按钮类
不知道为什么,很讨厌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