Cocos2d-x结构学习(十)CCMenu、CCLayerRGBA、CREATE_FUNC、CCMenuItem、tCCMenuState

前端之家收集整理的这篇文章主要介绍了Cocos2d-x结构学习(十)CCMenu、CCLayerRGBA、CREATE_FUNC、CCMenuItem、tCCMenuState前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1、CCMenu:菜单类,继承自CCLayerRGBA

  1. class CC_DLL CCMenu : public CCLayerRGBA
  2. {
  3. bool m_bEnabled; //标记菜单是否接收事件
  4. public:
  5. CCMenu() : m_pSelectedItem(NULL) {}
  6. virtual ~CCMenu(){}
  7.  
  8. static CCMenu* create(); //几个创建菜单函数
  9. static CCMenu* create(CCMenuItem* item,...);
  10. static CCMenu* createWithArray(CCArray* pArrayOfItems);
  11. static CCMenu* createWithItem(CCMenuItem* item);
  12. static CCMenu* createWithItems(CCMenuItem *firstItem,va_list args);
  13.  
  14. bool init(); //初始化相关函数
  15. bool initWithArray(CCArray* pArrayOfItems);
  16.  
  17. void alignItemsVerticallyWithPadding(float padding); //下面是和菜单对齐相关的一组函数
  18. void alignItemsHorizontally();
  19. void alignItemsHorizontallyWithPadding(float padding);
  20. void alignItemsInColumns(unsigned int columns,...);
  21. void alignItemsInColumns(unsigned int columns,va_list args);
  22. void alignItemsInColumnsWithArray(CCArray* rows);
  23. void alignItemsInRows(unsigned int rows,...);
  24. void alignItemsInRows(unsigned int rows,va_list args);
  25. void alignItemsInRowsWithArray(CCArray* columns);
  26.  
  27. void setHandlerPriority(int newPriority); //设置处理的优先级
  28.  
  29. virtual void addChild(CCNode * child); //孩子节点处理相关函数
  30. virtual void addChild(CCNode * child,int zOrder);
  31. virtual void addChild(CCNode * child,int zOrder,int tag);
  32. virtual void registerWithTouchDispatcher();
  33. virtual void removeChild(CCNode* child,bool cleanup);
  34.  
  35. virtual bool ccTouchBegan(CCTouch* touch,CCEvent* event); //触摸处理相关函数
  36. virtual void ccTouchEnded(CCTouch* touch,CCEvent* event);
  37. virtual void ccTouchCancelled(CCTouch *touch,CCEvent* event);
  38. virtual void ccTouchMoved(CCTouch* touch,CCEvent* event);
  39.  
  40. virtual void onExit(); //退出
  41.  
  42. virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
  43. virtual bool isOpacityModifyRGB(void) { return false;}
  44. virtual bool isEnabled() { return m_bEnabled; } //判断和设置是否混合
  45. virtual void setEnabled(bool value) { m_bEnabled = value; };
  46. protected:
  47. CCMenuItem* itemForTouch(CCTouch * touch);
  48. tCCMenuState m_eState;
  49. CCMenuItem *m_pSelectedItem;
  50. };
2、CCLayerRGBA:继承自CCLayer和CCRGBAProtocol,颜色相关类
  1. class CC_DLL CCLayerRGBA : public CCLayer,public CCRGBAProtocol
  2. {
  3. public:
  4. CREATE_FUNC(CCLayerRGBA);
  1. CCLayerRGBA();
  2. virtual ~CCLayerRGBA();
  3. virtual bool init();
  4. virtual GLubyte getOpacity();
  5. virtual GLubyte getDisplayedOpacity();
  6. virtual void setOpacity(GLubyte opacity);
  7. virtual void updateDisplayedOpacity(GLubyte parentOpacity);
  8. virtual bool isCascadeOpacityEnabled();
  9. virtual void setCascadeOpacityEnabled(bool cascadeOpacityEnabled);
  10. virtual const ccColor3B& getColor();
  11. virtual const ccColor3B& getDisplayedColor();
  12. virtual void setColor(const ccColor3B& color);
  13. virtual void updateDisplayedColor(const ccColor3B& parentColor);
  14. virtual bool isCascadeColorEnabled();
  15. virtual void setCascadeColorEnabled(bool cascadeColorEnabled);
  16. virtual void setOpacityModifyRGB(bool bValue) {CC_UNUSED_PARAM(bValue);}
  17. virtual bool isOpacityModifyRGB() { return false; }
  18. protected:
  19. GLubyte _displayedOpacity,_realOpacity;
  20. ccColor3B _displayedColor,_realColor;
  21. bool _cascadeOpacityEnabled,_cascadeColorEnabled;
  22. };
3、CREATE_FUNC:定义一个创建函数的宏,使编写更简便
  1. #define CREATE_FUNC(__TYPE__) \
  2. static __TYPE__* create() \
  3. { \
  4. __TYPE__ *pRet = new __TYPE__(); \
  5. if (pRet && pRet->init()) \
  6. { \
  7. pRet->autorelease(); \
  8. return pRet; \
  9. } \
  10. else \
  11. { \
  12. delete pRet; \
  13. pRet = NULL; \
  14. return NULL; \
  15. } \
  16. }
4、CCMenuItem:菜单项,继承自CCNodeRGBA
  1. class CC_DLL CCMenuItem : public CCNodeRGBA
  2. {
  3. protected:
  4. bool m_bSelected; //是否被选中
  5. bool m_bEnabled;
  6.  
  7. public:
  8. CCMenuItem()
  9. : m_bSelected(false),m_bEnabled(false),m_pListener(NULL),m_pfnSelector(NULL),m_nScriptTapHandler(0)
  10. {}
  11. virtual ~CCMenuItem();
  12.  
  13. static CCMenuItem* create();
  14. bool initWithTarget(CCObject *rec,SEL_MenuHandler selector);
  1. CCRect rect();
  2. virtual void activate();
  3.  
  4. virtual void selected(); //选中
  5. virtual void unselected(); //取消选中
  6. virtual void registerScriptTapHandler(int nHandler); //脚本处理例程相关
  7. virtual void unregisterScriptTapHandler(void);
  8. int getScriptTapHandler() { return m_nScriptTapHandler; };
  9.  
  10. virtual bool isEnabled(); //启用和选择相关
  11. virtual void setEnabled(bool value);
  12. virtual bool isSelected();
  13. void setTarget(CCObject *rec,SEL_MenuHandler selector); //设置回调函数
  14. protected:
  15. CCObject* m_pListener;
  16. SEL_MenuHandler m_pfnSelector;
  17. int m_nScriptTapHandler;
  18. };
4、tCCMenuState:菜单状态
  1. typedef enum
  2. {
  3. kCCMenuStateWaiting,kCCMenuStateTrackingTouch
  4. } tCCMenuState;

猜你在找的Cocos2d-x相关文章