大佬教程收集整理的这篇文章主要介绍了cocos2dx radiogrouop单选按钮的实现,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#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单选按钮的实现所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。