大佬教程收集整理的这篇文章主要介绍了Cocos2d-x结构学习(十)CCMenu、CCLayerRGBA、CREATE_FUNC、CCMenuItem、tCCMenuState,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1、CCMenu:菜单类,继承自CCLayerRGBA
class CC_DLL CCMenu : public CCLayerRGBA { bool m_bEnabled; //标记菜单是否接收事件 public: CCMenu() : m_pSELEctedItem(NULL) {} virtual ~CCMenu(){} static CCMenu* create(); //几个创建菜单的函数 static CCMenu* create(CCMenuItem* item,...); static CCMenu* createWithArray(CCArray* pArrayOfItems); static CCMenu* createWithItem(CCMenuItem* item); static CCMenu* createWithItems(CCMenuItem *firstItem,va_list args); bool init(); //初始化相关函数 bool initWithArray(CCArray* pArrayOfItems); void alignItemsVerticallyWithPadding(float padding); //下面是和菜单对齐相关的一组函数 void alignItemsHorizontally(); void alignItemsHorizontallyWithPadding(float padding); void alignItemsIncolumns(unsigned int columns,...); void alignItemsIncolumns(unsigned int columns,va_list args); void alignItemsIncolumnsWithArray(CCArray* rows); void alignItemsInRows(unsigned int rows,...); void alignItemsInRows(unsigned int rows,va_list args); void alignItemsInRowsWithArray(CCArray* columns); void setHandlerPriority(int newPriority); //设置处理的优先级 virtual void addChild(CCNode * child); //孩子节点处理相关函数 virtual void addChild(CCNode * child,int zOrder); virtual void addChild(CCNode * child,int zOrder,int tag); virtual void registerWithTouchDispatcher(); virtual void removeChild(CCNode* child,bool cleanup); virtual bool ccTouchBegan(CCTouch* touch,CCEvent* event); //触摸处理相关函数 virtual void ccTouchEnded(CCTouch* touch,CCEvent* event); virtual void ccTouchCancelled(CCTouch *touch,CCEvent* event); virtual void ccTouchMoved(CCTouch* touch,CCEvent* event); virtual void onExit(); //退出 virtual void setOpacitymodifyRGB(bool bvalue) {CC_UNUSED_PARAM(bvalue);} virtual bool isOpacitymodifyRGB(void) { return false;} virtual bool isEnabled() { return m_bEnabled; } //判断和设置是否混合 virtual void setEnabled(bool value) { m_bEnabled = value; }; protected: CCMenuItem* itemForTouch(CCTouch * touch); tCCMenuState m_eState; CCMenuItem *m_pSELEctedItem; }; @H_618_3@2、CCLayerRGBA:继承自CCLayer和CCRGBAProtocol,颜色相关类
class CC_DLL CCLayerRGBA : public CCLayer,public CCRGBAProtocol { public: CREATE_FUNC(CCLayerRGBA);@H_618_3@CCLayerRGBA(); virtual ~CCLayerRGBA(); virtual bool init(); virtual GLubyte getOpacity(); virtual GLubyte getDisplayedopacity(); virtual void setOpacity(GLubyte opacity); virtual void updateDisplayedopacity(GLubyte parentOpacity); virtual bool isCascadeOpacityEnabled(); virtual void setCascadeOpacityEnabled(bool cascadeOpacityEnabled); virtual const ccColor3B& getColor(); virtual const ccColor3B& getDisplayedColor(); virtual void setColor(const ccColor3B& color); virtual void updateDisplayedColor(const ccColor3B& parentColor); virtual bool isCascadeColorEnabled(); virtual void setCascadeColorEnabled(bool cascadeColorEnabled); virtual void setOpacitymodifyRGB(bool bvalue) {CC_UNUSED_PARAM(bvalue);} virtual bool isOpacitymodifyRGB() { return false; } protected: GLubyte _displayedopacity,_realOpacity; ccColor3B _displayedColor,_realColor; bool _cascadeOpacityEnabled,_cascadeColorEnabled; };@H_618_3@3、CREATE_FUNC:定义一个创建函数的宏,使编写更简便
#define CREATE_FUNC(__TYPE__) \ static __TYPE__* create() \ { \ __TYPE__ *pRet = new __TYPE__(); \ if (pRet && pRet->init()) \ { \ pRet->autorelease(); \ return pRet; \ } \ else \ { \ delete pRet; \ pRet = NULL; \ return NULL; \ } \ }@H_618_3@4、CCMenuItem:菜单项,继承自CCNodeRGBA
class CC_DLL CCMenuItem : public CCNodeRGBA { protected: bool m_bSELEcted; //是否被选中 bool m_bEnabled; public: CCMenuItem() : m_bSELEcted(false),m_bEnabled(false),m_pListener(NULL),m_pfnSELEctor(NULL),m_nScriptTapHandler(0) {} virtual ~CCMenuItem(); static CCMenuItem* create(); bool initWithTarget(CCObject *rec,SEL_MenuHandler SELEctor);@H_618_3@CCRect rect(); virtual void activate(); virtual void SELEcted(); //选中 virtual void unSELEcted(); //取消选中 virtual void registerScriptTapHandler(int nHandler); //脚本处理例程相关 virtual void unregisterScriptTapHandler(void); int getScriptTapHandler() { return m_nScriptTapHandler; }; virtual bool isEnabled(); //启用和选择相关 virtual void setEnabled(bool value); virtual bool isSELEcted(); void setTarget(CCObject *rec,SEL_MenuHandler SELEctor); //设置回调函数 protected: CCObject* m_pListener; SEL_MenuHandler m_pfnSELEctor; int m_nScriptTapHandler; };@H_618_3@4、tCCMenuState:菜单状态
typedef enum { kCCMenuStateWaiTing,kCCMenuStateTrackingTouch } tCCMenuState;@H_618_3@大佬总结
以上是大佬教程为你收集整理的Cocos2d-x结构学习(十)CCMenu、CCLayerRGBA、CREATE_FUNC、CCMenuItem、tCCMenuState全部内容,希望文章能够帮你解决Cocos2d-x结构学习(十)CCMenu、CCLayerRGBA、CREATE_FUNC、CCMenuItem、tCCMenuState所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。