1、
CcmenuItemSprite首先是一个节点(继承Node),内部包含了三个子节点(m_pnormalImage,m_pSelectedImage,m_pdisabledImage),
这三个子节点分别对应着CcmenuItem普通状态,选中状态和禁止状态。
2、
初始化方法:
CcmenuItemSprite * CcmenuItemSprite::create(CCNode* normalSprite,CCNode* selectedSprite,CCNode* disabledSprite)
3、
menuItem的大小:
void CcmenuItemSprite::setnormalImage(CCNode* pImage) { if (pImage != m_pnormalImage) { if (pImage) { addChild(pImage,knormalTag); pImage->setAnchorPoint(ccp(0,0)); } if (m_pnormalImage) { removeChild(m_pnormalImage,true); } m_pnormalImage = pImage; this->setContentSize(m_pnormalImage->getContentSize()); this->updateImagesVisibility(); } }
4、
点击按钮的状态切换就是通过隐藏和显示不同的状态来实现的:
void CcmenuItemSprite::selected() { CcmenuItem::selected(); if (m_pnormalImage) { if (m_pdisabledImage) { m_pdisabledImage->setVisible(false); } if (m_pSelectedImage) { m_pnormalImage->setVisible(false); m_pSelectedImage->setVisible(true); } else { m_pnormalImage->setVisible(true); } } }
总结:
1、如果想要在menuItem上面加入一个东西,如文字,表明是什么功能的按钮, 如果需要在三种状态下都显示,那么只需要把它加入到menuItem节点上即可。 2、如果三个状态显示的内容不同,如果只是图片变化,则使用 CcmenuItemImage * CcmenuItemImage::create(const char *normalImage,const char *selectedImage,const char *disabledImage) , 如果不止是图片变化,则使用CcmenuItemSprite::create(CCNode* normalSprite,CCNode* disabledSprite)。