zoukankan      html  css  js  c++  java
  • 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




  • 相关阅读:
    [Makefile] 递归编译的Makefile的实现
    python中出现 IndentationError:unindent does not match any outer indentation level
    Python3 编译中文字串报错解决方案
    linux下创建和删除软、硬链接
    免费的编程中文书籍索引
    starUML建立时序图
    UML 学习地址
    使用 Addr2line 将函数地址解析为函数名
    WIFI基本知识整理
    Ubuntu16.04 安装Python3.6 报错
  • 原文地址:https://www.cnblogs.com/riskyer/p/3299496.html
Copyright © 2011-2022 走看看