cocos2dx radiogrouop单选按钮的实现

cocos2dx radiogrouop单选按钮的实现,第1张

概述#ifndef __SceneHello__CCRadioMenu__ #define __SceneHello__CCRadioMenu__ #include "cocos2d.h" class CCRadioMenu : public cocos2d::CCMenu{ public: CCRadioMenu():cocos2d::CCMenu(){} coco
#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单选按钮的实现所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1043818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存