Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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,请注明来意。