首页 > 代码库 > 分析Cocos2d-x横版ACT手游源代码 1、登录

分析Cocos2d-x横版ACT手游源代码 1、登录

我就自己上游戏代码来   因为 这个游戏源代码 注释十分的   都可以看得懂
/************************************************************************/
/*			登录场景													*/
/************************************************************************/
class CNFLoginScene : public CCLayer ,public CMsgReceiver
{
protected:
	//标签
	enum 
	{
		enTagLoading = 1,
		enTagServerNameLabel,
		enTagStudioLoginLayer,		//登陆层
		enTagStudioRegisterLayer,	//注册层
	};

	int			m_nLoadRecNum;				//资源加载数
	int			m_nLoadRecTotalNum;			//资源加载总数

	int			m_nCurrentServerID;			//当前服务器ID
	int			m_nServerTotalNum;			//服务器的总数量

public:
	static CCScene * scene();

	static CNFLoginScene * CreateLayer();

	//消息接收
	virtual void RecMsg(int nMsgID,void* pInfo,int nSize);

protected:
	virtual void onEnter();

	//资源预加载
	void LoadRec();			

	void onl oadRecCallBack(CCObject *pObj);		//回调:资源加载
//	void onl oadLastRecCallBack(CCObject *pObj);	//回调:最后一个资源加载

	//异步加载骨骼资源的回调
	void onl oadArmatureData(float percent);

	virtual void InitSceneUI();					//在这里加载该图层专用的资源

	//---------------登录页按钮回调----------------
	void OnBtnEnterCallBack(CCObject *pSender, TouchEventType type);			//开始游戏
	void OnBtnServerSelectCallBack(CCObject *pSender, TouchEventType type);		//选择服务器
	void OnBtnSwitchToRegisterCallBack(CCObject *pSender, TouchEventType type);	//跳转到注册页
	void OnBtnLoginCallBack(CCObject *pSender, TouchEventType type);			//登录
	void OnAccountTextFieldEvent(CCObject *pSender, TextFiledEventType type);




	//---------------注册页按钮回调----------------
	void OnBackToLoginCallBack(CCObject *pSender, TouchEventType type);			//跳转到登录页
	void OnBtnRegisterCallBack(CCObject *pSender, TouchEventType type);			//注册
};


#endif
.cpp文件
#define _LOADREC_NUM_<span style="white-space:pre">		</span>16/************************************************************************//*<span style="white-space:pre">			</span>登录场景<span style="white-space:pre">													</span>*//************************************************************************/CCScene* CNFLoginScene::scene(){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>CCScene* pScene = CCScene::create();<span style="white-space:pre">		</span>CC_BREAK_IF(pScene==NULL);<span style="white-space:pre">		</span>CNFLoginScene* pLayer = CNFLoginScene::CreateLayer();<span style="white-space:pre">		</span>CC_BREAK_IF(pLayer==NULL);<span style="white-space:pre">		</span>pScene->addChild(pLayer);<span style="white-space:pre">		</span>return pScene;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::scene Error!");<span style="white-space:pre">	</span>return NULL;}CNFLoginScene * CNFLoginScene::CreateLayer(){<span style="white-space:pre">	</span>CNFLoginScene *pRet = new CNFLoginScene();<span style="white-space:pre">	</span>if (pRet && pRet->init())<span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>pRet->autorelease();<span style="white-space:pre">		</span>return pRet;<span style="white-space:pre">	</span>}<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::CreateLayer Error!");<span style="white-space:pre">	</span>delete pRet; <span style="white-space:pre">	</span>pRet = NULL; <span style="white-space:pre">	</span>return NULL;}void CNFLoginScene::onEnter(){<span style="white-space:pre">	</span>CCLayer::onEnter();<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>//创建Laoding层<span style="white-space:pre">		</span>CNFLoadingLayer * pLoading = CNFLoadingLayer::CreateLayer();<span style="white-space:pre">		</span>CC_BREAK_IF(pLoading==NULL);<span style="white-space:pre">		</span>addChild(pLoading,enZOrderFront+10000,enTagLoading);<span style="white-space:pre">		</span><span style="white-space:pre">		</span>m_nLoadRecNum = 0;<span style="white-space:pre">		</span>m_nLoadRecTotalNum = _LOADREC_NUM_;<span style="white-space:pre">		</span>//预加载本层资源<span style="white-space:pre">		</span>LoadRec();<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::onEnter Error!");}//资源预加载void CNFLoginScene::LoadRec(){<span style="white-space:pre">	</span>CCTextureCache::sharedTextureCache()->addImageAsync("ui/serverselect_bg.png",this,callfuncO_selector(CNFLoginScene::OnLoadRecCallBack));<span style="white-space:pre">	</span><span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulougongshou.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulouzhanshi.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/mayi.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/bianyikunchong.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/bubing.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/xiaoyin.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/NewProject.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/minren1.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulou_arrow.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/naili.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/NPC_kakaxi.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/portal.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/hited_light.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/public_casting.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));<span style="white-space:pre">	</span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/skill_light_1.ExportJson",this,schedule_selector(CNFLoginScene::OnLoadArmatureData));}void CNFLoginScene::OnLoadArmatureData( float percent ){<span style="white-space:pre">	</span>//CCLog("==================%f",percent);<span style="white-space:pre">	</span><span style="white-space:pre">	</span>m_nLoadRecNum ++;<span style="white-space:pre">	</span>//得到Laoding层<span style="white-space:pre">	</span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));<span style="white-space:pre">	</span>if(pLoading!=NULL){<span style="white-space:pre">		</span>pLoading->SetPro( (float)m_nLoadRecNum/(float)m_nLoadRecTotalNum );<span style="white-space:pre">	</span>}else{<span style="white-space:pre">		</span>CCLog("Fun CNFLoginScene::OnLoadArmatureData Error!");<span style="white-space:pre">	</span>}<span style="white-space:pre">		</span><span style="white-space:pre">	</span>if(m_nLoadRecNum==m_nLoadRecTotalNum){<span style="white-space:pre">		</span>//延迟1秒<span style="white-space:pre">		</span>this->runAction(CCSequence::create(<span style="white-space:pre">			</span>CCDelayTime::create(2.f),<span style="white-space:pre">			</span>CCCallFunc::create(this,callfunc_selector(CNFLoginScene::InitSceneUI)),<span style="white-space:pre">			</span>NULL));<span style="white-space:pre">	</span>}<span style="white-space:pre">	</span>if (percent >= 1)<span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>CCLog("addArmatureFileInfoAsync over");<span style="white-space:pre">	</span>}}//资源加载回调void CNFLoginScene::OnLoadRecCallBack( CCObject *pObj ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>m_nLoadRecNum ++;<span style="white-space:pre">		</span>//得到Laoding层<span style="white-space:pre">		</span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));<span style="white-space:pre">		</span>CC_BREAK_IF(pLoading==NULL);<span style="white-space:pre">		</span>pLoading->SetPro( (float)m_nLoadRecNum/(float)m_nLoadRecTotalNum );<span style="white-space:pre">		</span>if(m_nLoadRecNum==m_nLoadRecTotalNum){<span style="white-space:pre">			</span>//延迟1秒<span style="white-space:pre">			</span>this->runAction(CCSequence::create(<span style="white-space:pre">				</span>CCDelayTime::create(2.f),<span style="white-space:pre">				</span>CCCallFunc::create(this,callfunc_selector(CNFLoginScene::InitSceneUI)),<span style="white-space:pre">				</span>NULL));<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnLoadRecCallBack Error!");}// //最后一个资源加载回调// void CNFLoginScene::OnLoadLastRecCallBack( CCObject *pObj )// {// <span style="white-space:pre">	</span>do // <span style="white-space:pre">	</span>{// <span style="white-space:pre">		</span>//CCLog("==================last");// <span style="white-space:pre">		</span>m_nLoadRecNum ++;// // <span style="white-space:pre">		</span>//得到Laoding层// <span style="white-space:pre">		</span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));// <span style="white-space:pre">		</span>CC_BREAK_IF(pLoading==NULL);// <span style="white-space:pre">		</span>pLoading->SetPro( 1.f );// // <span style="white-space:pre">		</span>//延迟1秒// <span style="white-space:pre">		</span>this->runAction(CCSequence::create(// <span style="white-space:pre">			</span>CCDelayTime::create(1.f),// <span style="white-space:pre">			</span>CCCallFunc::create(this,callfunc_selector(CNFLoginScene::InitSceneUI)),// <span style="white-space:pre">			</span>NULL));// // <span style="white-space:pre">		</span>return ;// <span style="white-space:pre">	</span>} while (false);// <span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnLoadLastRecCallBack Error!");// }void CNFLoginScene::InitSceneUI(){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>//移除Laoding层 <span style="white-space:pre">		</span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));<span style="white-space:pre">		</span>if (pLoading!=NULL)<span style="white-space:pre">		</span>removeChildByTag(enTagLoading,true);<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>/*<span style="white-space:pre">				</span>2.联网:得到服务器ID                                                                     */<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>m_nCurrentServerID = 16;<span style="white-space:pre">		</span>m_nServerTotalNum = 31;<span style="white-space:pre">		</span>//创建登录UI层<span style="white-space:pre">		</span>UILayer* pLoginUiLayer = UILayer::create(); <span style="white-space:pre">		</span>CC_BREAK_IF(pLoginUiLayer==NULL);<span style="white-space:pre">		</span>UILayout *pLoginWidget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("NormalLogin.json"));<span style="white-space:pre">		</span>CC_BREAK_IF(pLoginWidget==NULL);<span style="white-space:pre">		</span>pLoginUiLayer->addWidget(pLoginWidget);<span style="white-space:pre">		</span>pLoginWidget->setName("LoginLayer");<span style="white-space:pre">		</span>pLoginWidget->setSize(getContentSize());<span style="white-space:pre">		</span>addChild(pLoginUiLayer,enZOrderBack,enTagStudioLoginLayer);<span style="white-space:pre">		</span>//设置切换服务器按钮回调<span style="white-space:pre">		</span>UIButton* pBtn_Server_Select = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Btn_Change_Server"));<span style="white-space:pre">		</span>CC_BREAK_IF(pBtn_Server_Select==NULL);<span style="white-space:pre">		</span>pBtn_Server_Select->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnServerSelectCallBack));<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>/*<span style="white-space:pre">			</span>背景图片                                                                     */<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>////创建背景图片<span style="white-space:pre">		</span>//CCSprite * pServerSelectBg = CCSprite::create("ui/serverselect_bg.png");<span style="white-space:pre">		</span>//CC_BREAK_IF(pServerSelectBg==NULL);<span style="white-space:pre">		</span>//pServerSelectBg->setScaleX( (float)CCDirector::sharedDirector()->getWinSize().width/(float)pServerSelectBg->getContentSize().width );<span style="white-space:pre">		</span>//pServerSelectBg->setPosition(SCREEN_CENTER);<span style="white-space:pre">		</span>//addChild(pServerSelectBg,enZOrderBack);<span style="white-space:pre">		</span>////创建logo图片<span style="white-space:pre">		</span>//CCSprite * pName = CCSprite::create("ui/logo_bg.png");<span style="white-space:pre">		</span>//CC_BREAK_IF(pName==NULL);<span style="white-space:pre">		</span>//pName->setPosition(ccp(SCREEN_WIDTH*0.5f,350));<span style="white-space:pre">		</span>//addChild(pName,enZOrderBack);<span style="white-space:pre">		</span>////创建服务器名称背景<span style="white-space:pre">		</span>//CCScale9Sprite * pServerNameBg = CCScale9Sprite::create("ui/bg_1.png");<span style="white-space:pre">		</span>//CC_BREAK_IF(pServerNameBg==NULL);<span style="white-space:pre">		</span>//pServerNameBg->setContentSize(CCSizeMake(173,40));<span style="white-space:pre">		</span>//pServerNameBg->setPosition(ccp(SCREEN_WIDTH*0.5f,220));<span style="white-space:pre">		</span>//addChild(pServerNameBg,enZOrderBack);<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>/*<span style="white-space:pre">			</span>创建按钮                                                                     */<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>//CCMenu * pMenu = CCMenu::create();<span style="white-space:pre">		</span>//CC_BREAK_IF(pMenu==NULL);<span style="white-space:pre">		</span>//pMenu->setPosition(CCPointZero);<span style="white-space:pre">		</span>//addChild(pMenu,enZOrderMid);<span style="white-space:pre">		</span>////选择服务器按钮<span style="white-space:pre">		</span>//CCMenuItemSprite * pBtnServerSelect = CCMenuItemSprite::create(<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>CCSprite::create("ui/btn_enter_n.png"),<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>CCSprite::create("ui/btn_enter_p.png"),<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>this,<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>menu_selector(CNFLoginScene::OnBtnServerSelectCallBack));<span style="white-space:pre">		</span>//CC_BREAK_IF(pBtnServerSelect==NULL);<span style="white-space:pre">		</span>//pBtnServerSelect->setScaleY(0.8f);<span style="white-space:pre">		</span>//pBtnServerSelect->setScaleX(0.2f);<span style="white-space:pre">		</span>//pBtnServerSelect->setPosition(ccp(pServerNameBg->getPositionX() + 63  ,pServerNameBg->getPositionY()));<span style="white-space:pre">		</span>//pMenu->addChild(pBtnServerSelect,enZOrderFront);<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>/*<span style="white-space:pre">					</span>label                                                                    */<span style="white-space:pre">		</span>/************************************************************************/<span style="white-space:pre">		</span>//CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");<span style="white-space:pre">		</span>//CC_BREAK_IF(pDicLang==NULL);<span style="white-space:pre">		</span>////服务器label<span style="white-space:pre">		</span>//CCString *pStrServer = dynamic_cast<CCString*>(pDicLang->objectForKey("server"));<span style="white-space:pre">		</span>//CCLabelTTF * pLabelServer = CCLabelTTF::create(pStrServer->m_sString.c_str(),"Arial",20);<span style="white-space:pre">		</span>//CC_BREAK_IF(pLabelServer==NULL);<span style="white-space:pre">		</span>//pLabelServer->setPosition(ccp(pServerNameBg->getPositionX() - 120,pServerNameBg->getPositionY()));<span style="white-space:pre">		</span>//pLabelServer->setColor(ccBLACK);<span style="white-space:pre">		</span>//addChild(pLabelServer,enZOrderFront);<span style="white-space:pre">		</span>////服务器名称label<span style="white-space:pre">		</span>//CCString *pStrServerName = dynamic_cast<CCString*>(pDicLang->objectForKey("server_name"));<span style="white-space:pre">		</span>//char szName[NAME_LEN] = {0};<span style="white-space:pre">		</span>//sprintf(szName,pStrServerName->m_sString.c_str(),m_nCurrentServerID);<span style="white-space:pre">		</span>//CCLabelTTF * pLabelServerName = CCLabelTTF::create(szName,"Arial",20);<span style="white-space:pre">		</span>//CC_BREAK_IF(pLabelServerName==NULL);<span style="white-space:pre">		</span>//pLabelServerName->setPosition(ccp(pServerNameBg->getPositionX() - 20,pServerNameBg->getPositionY()));<span style="white-space:pre">		</span>//addChild(pLabelServerName,enZOrderFront,enTagServerNameLabel);<span style="white-space:pre">		</span>////切换label<span style="white-space:pre">		</span>//CCString *pStrChange = dynamic_cast<CCString*>(pDicLang->objectForKey("server_change"));<span style="white-space:pre">		</span>//CCLabelTTF * pLabelChange = CCLabelTTF::create(pStrChange->m_sString.c_str(),"Arial",15);<span style="white-space:pre">		</span>//CC_BREAK_IF(pLabelChange==NULL);<span style="white-space:pre">		</span>//pLabelChange->setPosition(pBtnServerSelect->getPosition());<span style="white-space:pre">		</span>//addChild(pLabelChange,enZOrderFront);<span style="white-space:pre">		</span>#if(NF_PLATFORM == NF_PLATFORM_NORMAL)//没接SDK版    这里调用的是前面的公共的  <span style="white-space:pre">		</span>//隐藏SDK登录模块<span style="white-space:pre">		</span>UILayout* pSdk_Login_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Sdk_Login_Panel"));<span style="white-space:pre">		</span>CC_BREAK_IF(pSdk_Login_Panel==NULL);<span style="white-space:pre">		</span>pSdk_Login_Panel->setEnabled(false);<span style="white-space:pre">		</span>pSdk_Login_Panel->setVisible(false);<span style="white-space:pre">		</span>//显示正常登录模块<span style="white-space:pre">		</span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));<span style="white-space:pre">		</span>CC_BREAK_IF(pNormalLogin_Panel==NULL);<span style="white-space:pre">		</span>pNormalLogin_Panel->setEnabled(true);<span style="white-space:pre">		</span>pNormalLogin_Panel->setVisible(true);<span style="white-space:pre">		</span>//设置注册按钮回调<span style="white-space:pre">		</span>UIButton* pBtn_Register = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Btn_rg"));<span style="white-space:pre">		</span>CC_BREAK_IF(pBtn_Register==NULL);<span style="white-space:pre">		</span>pBtn_Register->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnSwitchToRegisterCallBack));<span style="white-space:pre">		</span>//设置登录按钮回调<span style="white-space:pre">		</span>UIButton* pBtn_Login = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Btn_Log"));<span style="white-space:pre">		</span>CC_BREAK_IF(pBtn_Login==NULL);<span style="white-space:pre">		</span>pBtn_Login->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnLoginCallBack));<span style="white-space:pre">		</span>//设置注册按钮回调<span style="white-space:pre">		</span>UITextField* pAccount_TextField = dynamic_cast<UITextField*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Account_TextField"));<span style="white-space:pre">		</span>CC_BREAK_IF(pAccount_TextField==NULL);<span style="white-space:pre">		</span>pAccount_TextField->setTouchSize(CCSizeMake(161,30));<span style="white-space:pre">		</span>pAccount_TextField->didNotSelectSelf();#else<span style="white-space:pre">		</span>////进入游戏按钮<span style="white-space:pre">		</span>//CCMenuItemSprite * pBtnEnter = CCMenuItemSprite::create(<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>CCSprite::create("ui/btn_enter_n.png"),<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>CCSprite::create("ui/btn_enter_p.png"),<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>this,<span style="white-space:pre">		</span>//<span style="white-space:pre">	</span>menu_selector(CNFLoginScene::OnBtnEnterCallBack));<span style="white-space:pre">		</span>//CC_BREAK_IF(pBtnEnter==NULL);<span style="white-space:pre">		</span>//pBtnEnter->setPosition(ccp(SCREEN_WIDTH*0.5f,140));<span style="white-space:pre">		</span>//pMenu->addChild(pBtnEnter,enZOrderFront);<span style="white-space:pre">		</span>////进入游戏label<span style="white-space:pre">		</span>//CCString *pStrStart = dynamic_cast<CCString*>(pDicLang->objectForKey("start"));<span style="white-space:pre">		</span>//CCLabelTTF * pLabelStart = CCLabelTTF::create(pStrStart->m_sString.c_str(),"Arial",20);<span style="white-space:pre">		</span>//CC_BREAK_IF(pLabelStart==NULL);<span style="white-space:pre">		</span>//pLabelStart->setPosition(pBtnEnter->getPosition());<span style="white-space:pre">		</span>//addChild(pLabelStart,enZOrderFront);<span style="white-space:pre">		</span>//设置进入游戏按钮回调<span style="white-space:pre">		</span>UIButton* pBtn_SDK_Start = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Sdk_Login_Panel")->getChildByName("Btn_SDK_Start"));<span style="white-space:pre">		</span>CC_BREAK_IF(pBtn_SDK_Start==NULL);<span style="white-space:pre">		</span>pBtn_SDK_Start->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnEnterCallBack));<span style="white-space:pre">	</span>#endif<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::InitSceneUI Error!");}void CNFLoginScene::OnBtnEnterCallBack( CCObject *pSender, TouchEventType type){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>////人物选择场景<span style="white-space:pre">				</span>//CCScene * pScene = CNFRoleSelectLayer::scene();<span style="white-space:pre">				</span>//CC_BREAK_IF(pScene==NULL);<span style="white-space:pre">				</span>//CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));<span style="white-space:pre">				</span>//人物选择场景<span style="white-space:pre">				</span>CCScene * pScene = CNFTeamCreateLayer::scene();<span style="white-space:pre">				</span>CC_BREAK_IF(pScene==NULL);<span style="white-space:pre">				</span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBtnEnterCallBack Error!");}void CNFLoginScene::OnBtnServerSelectCallBack( CCObject *pSender, TouchEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>//创建切换服务器层<span style="white-space:pre">				</span>CNFServerChangeLayer * pLayer = CNFServerChangeLayer::CreateLayer(m_nCurrentServerID,m_nServerTotalNum);<span style="white-space:pre">				</span>CC_BREAK_IF(pLayer==NULL);<span style="white-space:pre">				</span>pLayer->SetMsg(this);<span style="white-space:pre">				</span>addChild(pLayer,enZOrderFront+100);<span style="white-space:pre">				</span>//创建登录UI层<span style="white-space:pre">				</span>UILayer* pLoginUiLayer = dynamic_cast<UILayer*>(getChildByTag(enTagStudioLoginLayer));<span style="white-space:pre">				</span>CC_BREAK_IF(pLoginUiLayer==NULL);<span style="white-space:pre">				</span>UILayout *pNormalLogin = dynamic_cast<UILayout*>(pLoginUiLayer->getWidgetByName("LoginLayer"));<span style="white-space:pre">				</span>CC_BREAK_IF(pNormalLogin==NULL);<span style="white-space:pre">				</span>//显示正常登录模块<span style="white-space:pre">				</span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pNormalLogin->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));<span style="white-space:pre">				</span>CC_BREAK_IF(pNormalLogin_Panel==NULL);<span style="white-space:pre">				</span>pNormalLogin_Panel->setEnabled(false);<span style="white-space:pre">				</span>pNormalLogin_Panel->setVisible(false);<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBtnServerSelectCallBack Error!");}void CNFLoginScene::RecMsg( int nMsgID,void* pInfo,int nSize ){<span style="white-space:pre">	</span>switch (nMsgID)<span style="white-space:pre">	</span>{<span style="white-space:pre">	</span>case enMsg_ServerSelect:<span style="white-space:pre">		</span>{<span style="white-space:pre">			</span>tagServerSelect * pCmd = (tagServerSelect *)pInfo;<span style="white-space:pre">			</span>m_nCurrentServerID = pCmd->nServerID;<span style="white-space:pre">			</span>//创建登录UI层<span style="white-space:pre">			</span>UILayer* pLoginUiLayer = dynamic_cast<UILayer*>(getChildByTag(enTagStudioLoginLayer));<span style="white-space:pre">			</span>CC_BREAK_IF(pLoginUiLayer==NULL);<span style="white-space:pre">			</span>UILayout *pLoginWidget = dynamic_cast<UILayout*>(pLoginUiLayer->getWidgetByName("LoginLayer"));<span style="white-space:pre">			</span>CC_BREAK_IF(pLoginWidget==NULL);<span style="white-space:pre">			</span>//服务器名称label<span style="white-space:pre">			</span>CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");<span style="white-space:pre">			</span>CC_BREAK_IF(pDicLang==NULL);<span style="white-space:pre">			</span>CCString *pStrServerName = dynamic_cast<CCString*>(pDicLang->objectForKey("server_name"));<span style="white-space:pre">			</span>char szName[NAME_LEN] = {0};<span style="white-space:pre">			</span>sprintf(szName,pStrServerName->m_sString.c_str(),m_nCurrentServerID);<span style="white-space:pre">			</span>UILabel* pServer_Name_Lable = dynamic_cast<UILabel*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Server_Bg")->getChildByName("Server_Name_Lable"));<span style="white-space:pre">			</span>CC_BREAK_IF(pServer_Name_Lable==NULL);<span style="white-space:pre">			</span>pServer_Name_Lable->setText(szName);<span style="white-space:pre">			</span>//显示正常登录模块<span style="white-space:pre">			</span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));<span style="white-space:pre">			</span>CC_BREAK_IF(pNormalLogin_Panel==NULL);<span style="white-space:pre">			</span>pNormalLogin_Panel->setEnabled(true);<span style="white-space:pre">			</span>pNormalLogin_Panel->setVisible(true);<span style="white-space:pre">		</span>}break;<span style="white-space:pre">	</span>}}void CNFLoginScene::OnBtnSwitchToRegisterCallBack( CCObject *pSender, TouchEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>//创建登录UI层<span style="white-space:pre">				</span>UILayer* pRegisterUiLayer = UILayer::create(); <span style="white-space:pre">				</span>CC_BREAK_IF(pRegisterUiLayer==NULL);<span style="white-space:pre">				</span>UILayout *pRegisterWidget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("NormalRegister.json"));<span style="white-space:pre">				</span>CC_BREAK_IF(pRegisterWidget==NULL);<span style="white-space:pre">				</span>pRegisterUiLayer->addWidget(pRegisterWidget);<span style="white-space:pre">				</span>pRegisterWidget->setName("RegistLayer");<span style="white-space:pre">				</span>pRegisterWidget->setSize(getContentSize());<span style="white-space:pre">				</span>//设置返回登录按钮回调<span style="white-space:pre">				</span>UIButton* pBtn_Back = dynamic_cast<UIButton*>(pRegisterWidget->getChildByName("MainUi")->getChildByName("Btn_Return"));<span style="white-space:pre">				</span>CC_BREAK_IF(pBtn_Back==NULL);<span style="white-space:pre">				</span>pBtn_Back->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBackToLoginCallBack));<span style="white-space:pre">				</span>//注册按钮回调<span style="white-space:pre">				</span>UIButton* pBtn_rg = dynamic_cast<UIButton*>(pRegisterWidget->getChildByName("MainUi")->getChildByName("NormalRegister_Panel")->getChildByName("Btn_rg"));<span style="white-space:pre">				</span>CC_BREAK_IF(pBtn_rg==NULL);<span style="white-space:pre">				</span>pBtn_rg->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnRegisterCallBack));<span style="white-space:pre">				</span>addChild(pRegisterUiLayer,enZOrderBack,enTagStudioRegisterLayer);<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBtnRegisterCallBack Error!");}void CNFLoginScene::OnBtnLoginCallBack( CCObject *pSender, TouchEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>//读取角色信息<span style="white-space:pre">				</span>CNFServerRoleSelectInfoVec RoleSelectInfoVec;<span style="white-space:pre">				</span>CNFServerDataManager::SharedData()->GetRoleSelectInfo(RoleSelectInfoVec);<span style="white-space:pre">				</span>CNFServerRoleSelectInfoVec::iterator itRole=RoleSelectInfoVec.begin();<span style="white-space:pre">				</span>for (;itRole!=RoleSelectInfoVec.end();itRole++)<span style="white-space:pre">				</span>{<span style="white-space:pre">					</span>if (itRole->nState>=0)<span style="white-space:pre">					</span>{<span style="white-space:pre">						</span>//人物选择场景<span style="white-space:pre">						</span>CCScene * pScene = CNFRoleSelectLayer::scene();<span style="white-space:pre">						</span>CC_BREAK_IF(pScene==NULL);<span style="white-space:pre">						</span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));<span style="white-space:pre">						</span>return;<span style="white-space:pre">					</span>}<span style="white-space:pre">				</span>}<span style="white-space:pre">				</span>//人物选择场景<span style="white-space:pre">				</span>CCScene * pScene = CNFTeamCreateLayer::scene();<span style="white-space:pre">				</span>CC_BREAK_IF(pScene==NULL);<span style="white-space:pre">				</span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBtnLoginCallBack Error!");}void CNFLoginScene::OnAccountTextFieldEvent( CCObject *pSender, TextFiledEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>return;<span style="white-space:pre">	</span>} while (false);}/************************************************************************//*<span style="white-space:pre">			</span>注册模块<span style="white-space:pre">													</span>*//************************************************************************/void CNFLoginScene::OnBackToLoginCallBack( CCObject *pSender, TouchEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>removeChildByTag(enTagStudioRegisterLayer);<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBackToLoginCallBack Error!");}void CNFLoginScene::OnBtnRegisterCallBack( CCObject *pSender, TouchEventType type ){<span style="white-space:pre">	</span>do <span style="white-space:pre">	</span>{<span style="white-space:pre">		</span>switch (type)<span style="white-space:pre">		</span>{<span style="white-space:pre">		</span>case TOUCH_EVENT_ENDED:<span style="white-space:pre">			</span>{<span style="white-space:pre">				</span>CCLog("CNFLoginScene::OnBtnRegisterCallBack");<span style="white-space:pre">			</span>}break;<span style="white-space:pre">		</span>default:<span style="white-space:pre">			</span>break;<span style="white-space:pre">		</span>}<span style="white-space:pre">		</span>return ;<span style="white-space:pre">	</span>} while (false);<span style="white-space:pre">	</span>CCLog("Fun CNFLoginScene::OnBtnRegisterCallBack Error!");}
由于这一款游戏的服务器代码没有公开  没有办法分析 但是现有点代码已经够我分析的了

分析Cocos2d-x横版ACT手游源代码 1、登录