#ifndef __SceneHello__CCRadioMenu__ #define __SceneHello__CCRadioMenu__ #include "cocos2d.h" class CCRadioMenu : public cocos2d::Ccmenu{ public: CCRadioMenu():cocos2d::Ccmenu(){} cocos2d::CcmenuItem *_curHighlighted; virtual bool cctouchBegan(cocos2d::CCtouch *ptouch,cocos2d::CCEvent *pEvent); virtual voID cctouchended(cocos2d::CCtouch *ptouch,cocos2d::CCEvent *pEvent); virtual voID cctouchCancelled(cocos2d::CCtouch *ptouch,cocos2d::CCEvent *pEvent); virtual voID cctouchmoved(cocos2d::CCtouch *ptouch,cocos2d::CCEvent *pEvent); voID setSelectedItem_(cocos2d::CcmenuItem *item); static CCRadioMenu* create(cocos2d::CcmenuItem* item,...); }; #endif /* defined(__SceneHello__CCRadioMenu__) */
#include "CCRadioMenu.h" using namespace cocos2d; CCRadioMenu *CCRadioMenu::create(CcmenuItem *item,...){ va_List args; va_start(args,item); CCRadioMenu *pRet = new CCRadioMenu(); CCArray* pArray = NulL; if( item ) { pArray = CCArray::create(item,NulL); CcmenuItem *i = va_arg(args,CcmenuItem*); while(i) { pArray->addobject(i); i = va_arg(args,CcmenuItem*); } } if (pRet && pRet->initWithArray(pArray)) { pRet->autorelease(); va_end(args); return pRet; } va_end(args); CC_SAFE_DELETE(pRet); return NulL; } voID CCRadioMenu::setSelectedItem_(CcmenuItem *item){ m_pSelectedItem = NulL; m_pSelectedItem = item; } bool CCRadioMenu::cctouchBegan(CCtouch *ptouch,CCEvent *pEvent){ if (m_eState != kCcmenuStateWaiting) return false; CcmenuItem *curSelection = this->itemFortouch(ptouch); if (curSelection) { curSelection->selected(); _curHighlighted = curSelection; if (_curHighlighted) { if (m_pSelectedItem != curSelection) { m_pSelectedItem->unselected(); } m_eState = kCcmenuStateTrackingtouch; return true; } } return false; } voID CCRadioMenu::cctouchended(CCtouch *ptouch,CCEvent *pEvent){ CCAssert(m_eState == kCcmenuStateTrackingtouch,"[Menu cctouchended] -- invalID state"); CcmenuItem *curSelection = this->itemFortouch(ptouch); if (curSelection != _curHighlighted && curSelection != NulL) { m_pSelectedItem->selected(); _curHighlighted->unselected(); _curHighlighted = NulL; m_eState = kCcmenuStateWaiting; return; } m_pSelectedItem = _curHighlighted; _curHighlighted->activate(); _curHighlighted = NulL; m_eState = kCcmenuStateWaiting; } voID CCRadioMenu::cctouchCancelled(CCtouch *ptouch,CCEvent *pEvent){ CCAssert(m_eState == kCcmenuStateTrackingtouch,"[Menu cctouchCancelled] -- invalID state"); m_pSelectedItem->selected(); _curHighlighted->unselected(); _curHighlighted = NulL; m_eState = kCcmenuStateWaiting; } voID CCRadioMenu::cctouchmoved(CCtouch *ptouch,"[Menu cctouchmoved] -- invalID state"); CcmenuItem *curSelection = this->itemFortouch(ptouch); if (curSelection != _curHighlighted && curSelection != NulL) { _curHighlighted->unselected(); curSelection->selected(); _curHighlighted = curSelection; return; } }用法:
CcmenuItemImage *menuItem_man = CcmenuItemImage::create( "Jsman_nor.png","Jsman_pre.png",this,menu_selector(HelloWorld::selectMan)); menuItem_man->setposition(ccp(size.wIDth*0.3f,size.height*0.66f)); CcmenuItemImage *menuItem_man2 = CcmenuItemImage::create( "Jsman_nor.png",menu_selector(HelloWorld::selectMan)); menuItem_man2->setposition(ccp(size.wIDth*0.3f,size.height*0.3f)); CcmenuItemImage *menuItem_woman = CcmenuItemImage::create( "Jswoman_nor.png","Jswoman_pre.png",menu_selector(HelloWorld::selectWomen)); menuItem_woman->setposition(ccp(size.wIDth*0.7f,size.height*0.66f)); CcmenuItemImage *menuItem_woman2 = CcmenuItemImage::create( "Jswoman_nor.png",menu_selector(HelloWorld::selectWomen)); menuItem_woman2->setposition(ccp(size.wIDth*0.7f,size.height*0.3f)); CCRadioMenu *radioMenu = CCRadioMenu::create(menuItem_man,menuItem_man2,menuItem_woman,menuItem_woman2,NulL); radioMenu->setSelectedItem_(menuItem_man); menuItem_man->selected(); radioMenu->setposition(CCPointZero); this->addChild(radioMenu,1);总结
以上是内存溢出为你收集整理的cocos2dx radiogrouop单选按钮的实现全部内容,希望文章能够帮你解决cocos2dx radiogrouop单选按钮的实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)