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)。