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

前端之家收集整理的这篇文章主要介绍了分析Cocos2d-x横版ACT手游源代码 1、登录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
  1. 我就自己上游戏代码 因为 这个游戏源代码 注释十分的 都可以看得懂
  1. /************************************************************************/
  2. /* 登录场景 */
  3. /************************************************************************/
  4. class CNFLoginScene : public CCLayer,public CMsgReceiver
  5. {
  6. protected:
  7. //标签
  8. enum
  9. {
  10. enTagLoading = 1,enTagServerNameLabel,enTagStudioLoginLayer,//登陆层
  11. enTagStudioRegisterLayer,//注册
  12. };
  13.  
  14. int m_nLoadRecNum; //资源加载数
  15. int m_nLoadRecTotalNum; //资源加载总数
  16.  
  17. int m_nCurrentServerID; //当前服务器ID
  18. int m_nServerTotalNum; //服务器的总数量
  19.  
  20. public:
  21. static CCScene * scene();
  22.  
  23. static CNFLoginScene * CreateLayer();
  24.  
  25. //消息接收
  26. virtual void RecMsg(int nMsgID,void* pInfo,int nSize);
  27.  
  28. protected:
  29. virtual void onEnter();
  30.  
  31. //资源预加载
  32. void LoadRec();
  33.  
  34. void OnLoadRecCallBack(CCObject *pObj); //回调:资源加载
  35. // void OnLoadLastRecCallBack(CCObject *pObj); //回调:最后一个资源加载
  36.  
  37. //异步加载骨骼资源的回调
  38. void OnLoadArmatureData(float percent);
  39.  
  40. virtual void InitSceneUI(); //在这里加载该图层专用的资源
  41.  
  42. //---------------登录页按钮回调----------------
  43. void OnBtnEnterCallBack(CCObject *pSender,TouchEventType type); //开始游戏
  44. void OnBtnServerSelectCallBack(CCObject *pSender,TouchEventType type); //选择服务器
  45. void OnBtnSwitchToRegisterCallBack(CCObject *pSender,TouchEventType type); //跳转注册
  46. void OnBtnLoginCallBack(CCObject *pSender,TouchEventType type); //登录
  47. void OnAccountTextFieldEvent(CCObject *pSender,TextFiledEventType type);
  48.  
  49.  
  50.  
  51.  
  52. //---------------注册页按钮回调----------------
  53. void OnBackToLoginCallBack(CCObject *pSender,TouchEventType type); //跳转登录
  54. void OnBtnRegisterCallBack(CCObject *pSender,TouchEventType type); //注册
  55. };
  56.  
  57.  
  58. #endif
  1.  
  1. .cpp文件
  1.  
  1. #define _LOADREC_NUM_<span style="white-space:pre"> </span>16
  2. /************************************************************************/
  3. /*<span style="white-space:pre"> </span>登录场景<span style="white-space:pre"> </span>*/
  4. /************************************************************************/
  5. CCScene* CNFLoginScene::scene()
  6. {
  7. <span style="white-space:pre"> </span>do
  8. <span style="white-space:pre"> </span>{
  9. <span style="white-space:pre"> </span>CCScene* pScene = CCScene::create();
  10. <span style="white-space:pre"> </span>CC_BREAK_IF(pScene==NULL);
  11.  
  12.  
  13. <span style="white-space:pre"> </span>CNFLoginScene* pLayer = CNFLoginScene::CreateLayer();
  14. <span style="white-space:pre"> </span>CC_BREAK_IF(pLayer==NULL);
  15.  
  16.  
  17. <span style="white-space:pre"> </span>pScene->addChild(pLayer);
  18. <span style="white-space:pre"> </span>return pScene;
  19.  
  20.  
  21. <span style="white-space:pre"> </span>} while (false);
  22. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::scene Error!");
  23. <span style="white-space:pre"> </span>return NULL;
  24. }
  25.  
  26.  
  27. CNFLoginScene * CNFLoginScene::CreateLayer()
  28. {
  29. <span style="white-space:pre"> </span>CNFLoginScene *pRet = new CNFLoginScene();
  30. <span style="white-space:pre"> </span>if (pRet && pRet->init())
  31. <span style="white-space:pre"> </span>{
  32. <span style="white-space:pre"> </span>pRet->autorelease();
  33. <span style="white-space:pre"> </span>return pRet;
  34. <span style="white-space:pre"> </span>}
  35. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::CreateLayer Error!");
  36. <span style="white-space:pre"> </span>delete pRet;
  37. <span style="white-space:pre"> </span>pRet = NULL;
  38. <span style="white-space:pre"> </span>return NULL;
  39. }
  40.  
  41.  
  42. void CNFLoginScene::onEnter()
  43. {
  44. <span style="white-space:pre"> </span>CCLayer::onEnter();
  45. <span style="white-space:pre"> </span>do
  46. <span style="white-space:pre"> </span>{
  47. <span style="white-space:pre"> </span>//创建Laoding
  48. <span style="white-space:pre"> </span>CNFLoadingLayer * pLoading = CNFLoadingLayer::CreateLayer();
  49. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoading==NULL);
  50. <span style="white-space:pre"> </span>addChild(pLoading,enZOrderFront+10000,enTagLoading);
  51. <span style="white-space:pre"> </span>
  52. <span style="white-space:pre"> </span>m_nLoadRecNum = 0;
  53. <span style="white-space:pre"> </span>m_nLoadRecTotalNum = _LOADREC_NUM_;
  54.  
  55.  
  56. <span style="white-space:pre"> </span>//预加载本层资源
  57. <span style="white-space:pre"> </span>LoadRec();
  58.  
  59.  
  60. <span style="white-space:pre"> </span>return ;
  61. <span style="white-space:pre"> </span>} while (false);
  62. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::onEnter Error!");
  63. }
  64.  
  65.  
  66. //资源预加载
  67. void CNFLoginScene::LoadRec()
  68. {
  69. <span style="white-space:pre"> </span>CCTextureCache::sharedTextureCache()->addImageAsync("ui/serverselect_bg.png",this,callfuncO_selector(CNFLoginScene::OnLoadRecCallBack));
  70. <span style="white-space:pre"> </span>
  71. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulougongshou.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  72. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulouzhanshi.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  73. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/mayi.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  74. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/bianyikunchong.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  75. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/bubing.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  76. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/xiaoyin.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  77. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/NewProject.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  78. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/minren1.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  79.  
  80.  
  81. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/kulou_arrow.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  82.  
  83.  
  84. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/naili.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  85. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/NPC_kakaxi.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  86. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/portal.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  87.  
  88.  
  89. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/hited_light.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  90. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/public_casting.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  91. <span style="white-space:pre"> </span>CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfoAsync("armature/skill_light_1.ExportJson",schedule_selector(CNFLoginScene::OnLoadArmatureData));
  92. }
  93.  
  94.  
  95.  
  96.  
  97. void CNFLoginScene::OnLoadArmatureData( float percent )
  98. {
  99. <span style="white-space:pre"> </span>//CCLog("==================%f",percent);
  100. <span style="white-space:pre"> </span>
  101. <span style="white-space:pre"> </span>m_nLoadRecNum ++;
  102.  
  103.  
  104. <span style="white-space:pre"> </span>//得到Laoding层
  105. <span style="white-space:pre"> </span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));
  106. <span style="white-space:pre"> </span>if(pLoading!=NULL){
  107. <span style="white-space:pre"> </span>pLoading->SetPro( (float)m_nLoadRecNum/(float)m_nLoadRecTotalNum );
  108. <span style="white-space:pre"> </span>}else{
  109. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnLoadArmatureData Error!");
  110. <span style="white-space:pre"> </span>}
  111. <span style="white-space:pre"> </span>
  112. <span style="white-space:pre"> </span>if(m_nLoadRecNum==m_nLoadRecTotalNum){
  113. <span style="white-space:pre"> </span>//延迟1秒
  114. <span style="white-space:pre"> </span>this->runAction(CCSequence::create(
  115. <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));
  116. <span style="white-space:pre"> </span>}
  117. <span style="white-space:pre"> </span>if (percent >= 1)
  118. <span style="white-space:pre"> </span>{
  119. <span style="white-space:pre"> </span>CCLog("addArmatureFileInfoAsync over");
  120. <span style="white-space:pre"> </span>}
  121. }
  122.  
  123.  
  124. //资源加载回调
  125. void CNFLoginScene::OnLoadRecCallBack( CCObject *pObj )
  126. {
  127. <span style="white-space:pre"> </span>do
  128. <span style="white-space:pre"> </span>{
  129. <span style="white-space:pre"> </span>m_nLoadRecNum ++;
  130.  
  131.  
  132. <span style="white-space:pre"> </span>//得到Laoding层
  133. <span style="white-space:pre"> </span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));
  134. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoading==NULL);
  135. <span style="white-space:pre"> </span>pLoading->SetPro( (float)m_nLoadRecNum/(float)m_nLoadRecTotalNum );
  136.  
  137.  
  138. <span style="white-space:pre"> </span>if(m_nLoadRecNum==m_nLoadRecTotalNum){
  139. <span style="white-space:pre"> </span>//延迟1秒
  140. <span style="white-space:pre"> </span>this->runAction(CCSequence::create(
  141. <span style="white-space:pre"> </span>CCDelayTime::create(2.f),<span style="white-space:pre"> </span>CCCallFunc::create(this,<span style="white-space:pre"> </span>NULL));
  142. <span style="white-space:pre"> </span>}
  143.  
  144.  
  145. <span style="white-space:pre"> </span>return ;
  146. <span style="white-space:pre"> </span>} while (false);
  147. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnLoadRecCallBack Error!");
  148. }
  149.  
  150.  
  151. // //最后一个资源加载回调
  152. // void CNFLoginScene::OnLoadLastRecCallBack( CCObject *pObj )
  153. // {
  154. // <span style="white-space:pre"> </span>do
  155. // <span style="white-space:pre"> </span>{
  156. // <span style="white-space:pre"> </span>//CCLog("==================last");
  157. // <span style="white-space:pre"> </span>m_nLoadRecNum ++;
  158. //
  159. // <span style="white-space:pre"> </span>//得到Laoding层
  160. // <span style="white-space:pre"> </span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));
  161. // <span style="white-space:pre"> </span>CC_BREAK_IF(pLoading==NULL);
  162. // <span style="white-space:pre"> </span>pLoading->SetPro( 1.f );
  163. //
  164. // <span style="white-space:pre"> </span>//延迟1秒
  165. // <span style="white-space:pre"> </span>this->runAction(CCSequence::create(
  166. // <span style="white-space:pre"> </span>CCDelayTime::create(1.f),// <span style="white-space:pre"> </span>CCCallFunc::create(this,// <span style="white-space:pre"> </span>NULL));
  167. //
  168. // <span style="white-space:pre"> </span>return ;
  169. // <span style="white-space:pre"> </span>} while (false);
  170. // <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnLoadLastRecCallBack Error!");
  171. // }
  172.  
  173.  
  174. void CNFLoginScene::InitSceneUI()
  175. {
  176. <span style="white-space:pre"> </span>do
  177. <span style="white-space:pre"> </span>{
  178. <span style="white-space:pre"> </span>//移除Laoding层
  179. <span style="white-space:pre"> </span>CNFLoadingLayer * pLoading = dynamic_cast<CNFLoadingLayer *>(getChildByTag(enTagLoading));
  180. <span style="white-space:pre"> </span>if (pLoading!=NULL)
  181. <span style="white-space:pre"> </span>removeChildByTag(enTagLoading,true);
  182.  
  183.  
  184. <span style="white-space:pre"> </span>/************************************************************************/
  185. <span style="white-space:pre"> </span>/*<span style="white-space:pre"> </span>2.联网:得到服务器ID */
  186. <span style="white-space:pre"> </span>/************************************************************************/
  187. <span style="white-space:pre"> </span>m_nCurrentServerID = 16;
  188. <span style="white-space:pre"> </span>m_nServerTotalNum = 31;
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195. <span style="white-space:pre"> </span>//创建登录UI层
  196. <span style="white-space:pre"> </span>UILayer* pLoginUiLayer = UILayer::create();
  197. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoginUiLayer==NULL);
  198.  
  199.  
  200.  
  201.  
  202. <span style="white-space:pre"> </span>UILayout *pLoginWidget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("NormalLogin.json"));
  203. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoginWidget==NULL);
  204. <span style="white-space:pre"> </span>pLoginUiLayer->addWidget(pLoginWidget);
  205. <span style="white-space:pre"> </span>pLoginWidget->setName("LoginLayer");
  206. <span style="white-space:pre"> </span>pLoginWidget->setSize(getContentSize());
  207.  
  208.  
  209. <span style="white-space:pre"> </span>addChild(pLoginUiLayer,enZOrderBack,enTagStudioLoginLayer);
  210.  
  211.  
  212.  
  213.  
  214. <span style="white-space:pre"> </span>//设置切换服务器按钮回调
  215. <span style="white-space:pre"> </span>UIButton* pBtn_Server_Select = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Btn_Change_Server"));
  216. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_Server_Select==NULL);
  217. <span style="white-space:pre"> </span>pBtn_Server_Select->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnServerSelectCallBack));
  218.  
  219.  
  220.  
  221.  
  222. <span style="white-space:pre"> </span>/************************************************************************/
  223. <span style="white-space:pre"> </span>/*<span style="white-space:pre"> </span>背景图片 */
  224. <span style="white-space:pre"> </span>/************************************************************************/
  225. <span style="white-space:pre"> </span>////创建背景图片
  226. <span style="white-space:pre"> </span>//CCSprite * pServerSelectBg = CCSprite::create("ui/serverselect_bg.png");
  227. <span style="white-space:pre"> </span>//CC_BREAK_IF(pServerSelectBg==NULL);
  228. <span style="white-space:pre"> </span>//pServerSelectBg->setScaleX( (float)CCDirector::sharedDirector()->getWinSize().width/(float)pServerSelectBg->getContentSize().width );
  229. <span style="white-space:pre"> </span>//pServerSelectBg->setPosition(SCREEN_CENTER);
  230. <span style="white-space:pre"> </span>//addChild(pServerSelectBg,enZOrderBack);
  231.  
  232.  
  233. <span style="white-space:pre"> </span>////创建logo图片
  234. <span style="white-space:pre"> </span>//CCSprite * pName = CCSprite::create("ui/logo_bg.png");
  235. <span style="white-space:pre"> </span>//CC_BREAK_IF(pName==NULL);
  236. <span style="white-space:pre"> </span>//pName->setPosition(ccp(SCREEN_WIDTH*0.5f,350));
  237. <span style="white-space:pre"> </span>//addChild(pName,enZOrderBack);
  238.  
  239.  
  240. <span style="white-space:pre"> </span>////创建服务器名称背景
  241. <span style="white-space:pre"> </span>//CCScale9Sprite * pServerNameBg = CCScale9Sprite::create("ui/bg_1.png");
  242. <span style="white-space:pre"> </span>//CC_BREAK_IF(pServerNameBg==NULL);
  243. <span style="white-space:pre"> </span>//pServerNameBg->setContentSize(CCSizeMake(173,40));
  244. <span style="white-space:pre"> </span>//pServerNameBg->setPosition(ccp(SCREEN_WIDTH*0.5f,220));
  245. <span style="white-space:pre"> </span>//addChild(pServerNameBg,enZOrderBack);
  246.  
  247.  
  248.  
  249.  
  250. <span style="white-space:pre"> </span>/************************************************************************/
  251. <span style="white-space:pre"> </span>/*<span style="white-space:pre"> </span>创建按钮 */
  252. <span style="white-space:pre"> </span>/************************************************************************/
  253. <span style="white-space:pre"> </span>//CCMenu * pMenu = CCMenu::create();
  254. <span style="white-space:pre"> </span>//CC_BREAK_IF(pMenu==NULL);
  255. <span style="white-space:pre"> </span>//pMenu->setPosition(CCPointZero);
  256. <span style="white-space:pre"> </span>//addChild(pMenu,enZOrderMid);
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263. <span style="white-space:pre"> </span>////选择服务器按钮
  264. <span style="white-space:pre"> </span>//CCMenuItemSprite * pBtnServerSelect = CCMenuItemSprite::create(
  265. <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));
  266. <span style="white-space:pre"> </span>//CC_BREAK_IF(pBtnServerSelect==NULL);
  267. <span style="white-space:pre"> </span>//pBtnServerSelect->setScaleY(0.8f);
  268. <span style="white-space:pre"> </span>//pBtnServerSelect->setScaleX(0.2f);
  269. <span style="white-space:pre"> </span>//pBtnServerSelect->setPosition(ccp(pServerNameBg->getPositionX() + 63,pServerNameBg->getPositionY()));
  270. <span style="white-space:pre"> </span>//pMenu->addChild(pBtnServerSelect,enZOrderFront);
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279. <span style="white-space:pre"> </span>/************************************************************************/
  280. <span style="white-space:pre"> </span>/*<span style="white-space:pre"> </span>label */
  281. <span style="white-space:pre"> </span>/************************************************************************/
  282. <span style="white-space:pre"> </span>//CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");
  283. <span style="white-space:pre"> </span>//CC_BREAK_IF(pDicLang==NULL);
  284.  
  285.  
  286. <span style="white-space:pre"> </span>////服务器label
  287. <span style="white-space:pre"> </span>//CCString *pStrServer = dynamic_cast<CCString*>(pDicLang->objectForKey("server"));
  288. <span style="white-space:pre"> </span>//CCLabelTTF * pLabelServer = CCLabelTTF::create(pStrServer->m_sString.c_str(),"Arial",20);
  289. <span style="white-space:pre"> </span>//CC_BREAK_IF(pLabelServer==NULL);
  290. <span style="white-space:pre"> </span>//pLabelServer->setPosition(ccp(pServerNameBg->getPositionX() - 120,pServerNameBg->getPositionY()));
  291. <span style="white-space:pre"> </span>//pLabelServer->setColor(ccBLACK);
  292. <span style="white-space:pre"> </span>//addChild(pLabelServer,enZOrderFront);
  293.  
  294.  
  295. <span style="white-space:pre"> </span>////服务器名称label
  296. <span style="white-space:pre"> </span>//CCString *pStrServerName = dynamic_cast<CCString*>(pDicLang->objectForKey("server_name"));
  297. <span style="white-space:pre"> </span>//char szName[NAME_LEN] = {0};
  298. <span style="white-space:pre"> </span>//sprintf(szName,pStrServerName->m_sString.c_str(),m_nCurrentServerID);
  299. <span style="white-space:pre"> </span>//CCLabelTTF * pLabelServerName = CCLabelTTF::create(szName,20);
  300. <span style="white-space:pre"> </span>//CC_BREAK_IF(pLabelServerName==NULL);
  301. <span style="white-space:pre"> </span>//pLabelServerName->setPosition(ccp(pServerNameBg->getPositionX() - 20,pServerNameBg->getPositionY()));
  302. <span style="white-space:pre"> </span>//addChild(pLabelServerName,enZOrderFront,enTagServerNameLabel);
  303.  
  304.  
  305. <span style="white-space:pre"> </span>////切换label
  306. <span style="white-space:pre"> </span>//CCString *pStrChange = dynamic_cast<CCString*>(pDicLang->objectForKey("server_change"));
  307. <span style="white-space:pre"> </span>//CCLabelTTF * pLabelChange = CCLabelTTF::create(pStrChange->m_sString.c_str(),15);
  308. <span style="white-space:pre"> </span>//CC_BREAK_IF(pLabelChange==NULL);
  309. <span style="white-space:pre"> </span>//pLabelChange->setPosition(pBtnServerSelect->getPosition());
  310. <span style="white-space:pre"> </span>//addChild(pLabelChange,enZOrderFront);
  311.  
  312.  
  313.  
  314.  
  315. <span style="white-space:pre"> </span>
  316. #if(NF_PLATFORM == NF_PLATFORM_NORMAL)//没接SDK版 这里调用的是前面的公共的
  317.  
  318.  
  319. <span style="white-space:pre"> </span>//隐藏SDK登录模块
  320. <span style="white-space:pre"> </span>UILayout* pSdk_Login_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Sdk_Login_Panel"));
  321. <span style="white-space:pre"> </span>CC_BREAK_IF(pSdk_Login_Panel==NULL);
  322. <span style="white-space:pre"> </span>pSdk_Login_Panel->setEnabled(false);
  323. <span style="white-space:pre"> </span>pSdk_Login_Panel->setVisible(false);
  324.  
  325.  
  326.  
  327.  
  328. <span style="white-space:pre"> </span>//显示正常登录模块
  329. <span style="white-space:pre"> </span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));
  330. <span style="white-space:pre"> </span>CC_BREAK_IF(pNormalLogin_Panel==NULL);
  331. <span style="white-space:pre"> </span>pNormalLogin_Panel->setEnabled(true);
  332. <span style="white-space:pre"> </span>pNormalLogin_Panel->setVisible(true);
  333.  
  334.  
  335. <span style="white-space:pre"> </span>//设置注册按钮回调
  336. <span style="white-space:pre"> </span>UIButton* pBtn_Register = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Btn_rg"));
  337. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_Register==NULL);
  338. <span style="white-space:pre"> </span>pBtn_Register->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnSwitchToRegisterCallBack));
  339.  
  340.  
  341. <span style="white-space:pre"> </span>//设置登录按钮回调
  342. <span style="white-space:pre"> </span>UIButton* pBtn_Login = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Btn_Log"));
  343. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_Login==NULL);
  344. <span style="white-space:pre"> </span>pBtn_Login->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnLoginCallBack));
  345.  
  346.  
  347.  
  348.  
  349. <span style="white-space:pre"> </span>//设置注册按钮回调
  350. <span style="white-space:pre"> </span>UITextField* pAccount_TextField = dynamic_cast<UITextField*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel")->getChildByName("Account_TextField"));
  351. <span style="white-space:pre"> </span>CC_BREAK_IF(pAccount_TextField==NULL);
  352. <span style="white-space:pre"> </span>pAccount_TextField->setTouchSize(CCSizeMake(161,30));
  353. <span style="white-space:pre"> </span>pAccount_TextField->didNotSelectSelf();
  354.  
  355.  
  356.  
  357.  
  358. #else
  359.  
  360.  
  361. <span style="white-space:pre"> </span>////进入游戏按钮
  362. <span style="white-space:pre"> </span>//CCMenuItemSprite * pBtnEnter = CCMenuItemSprite::create(
  363. <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>menu_selector(CNFLoginScene::OnBtnEnterCallBack));
  364. <span style="white-space:pre"> </span>//CC_BREAK_IF(pBtnEnter==NULL);
  365. <span style="white-space:pre"> </span>//pBtnEnter->setPosition(ccp(SCREEN_WIDTH*0.5f,140));
  366. <span style="white-space:pre"> </span>//pMenu->addChild(pBtnEnter,enZOrderFront);
  367.  
  368.  
  369. <span style="white-space:pre"> </span>////进入游戏label
  370. <span style="white-space:pre"> </span>//CCString *pStrStart = dynamic_cast<CCString*>(pDicLang->objectForKey("start"));
  371. <span style="white-space:pre"> </span>//CCLabelTTF * pLabelStart = CCLabelTTF::create(pStrStart->m_sString.c_str(),20);
  372. <span style="white-space:pre"> </span>//CC_BREAK_IF(pLabelStart==NULL);
  373. <span style="white-space:pre"> </span>//pLabelStart->setPosition(pBtnEnter->getPosition());
  374. <span style="white-space:pre"> </span>//addChild(pLabelStart,enZOrderFront);
  375.  
  376.  
  377. <span style="white-space:pre"> </span>//设置进入游戏按钮回调
  378. <span style="white-space:pre"> </span>UIButton* pBtn_SDK_Start = dynamic_cast<UIButton*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Sdk_Login_Panel")->getChildByName("Btn_SDK_Start"));
  379. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_SDK_Start==NULL);
  380. <span style="white-space:pre"> </span>pBtn_SDK_Start->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnEnterCallBack));<span style="white-space:pre"> </span>
  381.  
  382.  
  383. #endif
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390. <span style="white-space:pre"> </span>return ;
  391. <span style="white-space:pre"> </span>} while (false);
  392. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::InitSceneUI Error!");
  393. }
  394.  
  395.  
  396. void CNFLoginScene::OnBtnEnterCallBack( CCObject *pSender,TouchEventType type)
  397. {
  398. <span style="white-space:pre"> </span>do
  399. <span style="white-space:pre"> </span>{
  400.  
  401.  
  402.  
  403.  
  404. <span style="white-space:pre"> </span>switch (type)
  405. <span style="white-space:pre"> </span>{
  406. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  407. <span style="white-space:pre"> </span>{
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414. <span style="white-space:pre"> </span>////人物选择场景
  415. <span style="white-space:pre"> </span>//CCScene * pScene = CNFRoleSelectLayer::scene();
  416. <span style="white-space:pre"> </span>//CC_BREAK_IF(pScene==NULL);
  417. <span style="white-space:pre"> </span>//CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));
  418.  
  419.  
  420. <span style="white-space:pre"> </span>//人物选择场景
  421. <span style="white-space:pre"> </span>CCScene * pScene = CNFTeamCreateLayer::scene();
  422. <span style="white-space:pre"> </span>CC_BREAK_IF(pScene==NULL);
  423. <span style="white-space:pre"> </span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));
  424. <span style="white-space:pre"> </span>}break;
  425. <span style="white-space:pre"> </span>default:
  426. <span style="white-space:pre"> </span>break;
  427. <span style="white-space:pre"> </span>}
  428.  
  429.  
  430.  
  431.  
  432. <span style="white-space:pre"> </span>return ;
  433. <span style="white-space:pre"> </span>} while (false);
  434. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBtnEnterCallBack Error!");
  435. }
  436.  
  437.  
  438. void CNFLoginScene::OnBtnServerSelectCallBack( CCObject *pSender,TouchEventType type )
  439. {
  440. <span style="white-space:pre"> </span>do
  441. <span style="white-space:pre"> </span>{
  442.  
  443.  
  444. <span style="white-space:pre"> </span>switch (type)
  445. <span style="white-space:pre"> </span>{
  446. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  447. <span style="white-space:pre"> </span>{
  448.  
  449.  
  450. <span style="white-space:pre"> </span>//创建切换服务器层
  451. <span style="white-space:pre"> </span>CNFServerChangeLayer * pLayer = CNFServerChangeLayer::CreateLayer(m_nCurrentServerID,m_nServerTotalNum);
  452. <span style="white-space:pre"> </span>CC_BREAK_IF(pLayer==NULL);
  453. <span style="white-space:pre"> </span>pLayer->SetMsg(this);
  454. <span style="white-space:pre"> </span>addChild(pLayer,enZOrderFront+100);
  455.  
  456.  
  457.  
  458.  
  459. <span style="white-space:pre"> </span>//创建登录UI层
  460. <span style="white-space:pre"> </span>UILayer* pLoginUiLayer = dynamic_cast<UILayer*>(getChildByTag(enTagStudioLoginLayer));
  461. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoginUiLayer==NULL);
  462.  
  463.  
  464. <span style="white-space:pre"> </span>UILayout *pNormalLogin = dynamic_cast<UILayout*>(pLoginUiLayer->getWidgetByName("LoginLayer"));
  465. <span style="white-space:pre"> </span>CC_BREAK_IF(pNormalLogin==NULL);
  466.  
  467.  
  468. <span style="white-space:pre"> </span>//显示正常登录模块
  469. <span style="white-space:pre"> </span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pNormalLogin->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));
  470. <span style="white-space:pre"> </span>CC_BREAK_IF(pNormalLogin_Panel==NULL);
  471. <span style="white-space:pre"> </span>pNormalLogin_Panel->setEnabled(false);
  472. <span style="white-space:pre"> </span>pNormalLogin_Panel->setVisible(false);
  473.  
  474.  
  475.  
  476.  
  477. <span style="white-space:pre"> </span>}break;
  478. <span style="white-space:pre"> </span>default:
  479. <span style="white-space:pre"> </span>break;
  480. <span style="white-space:pre"> </span>}
  481.  
  482.  
  483.  
  484.  
  485. <span style="white-space:pre"> </span>return ;
  486. <span style="white-space:pre"> </span>} while (false);
  487. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBtnServerSelectCallBack Error!");
  488. }
  489.  
  490.  
  491. void CNFLoginScene::RecMsg( int nMsgID,int nSize )
  492. {
  493. <span style="white-space:pre"> </span>switch (nMsgID)
  494. <span style="white-space:pre"> </span>{
  495. <span style="white-space:pre"> </span>case enMsg_ServerSelect:
  496. <span style="white-space:pre"> </span>{
  497. <span style="white-space:pre"> </span>tagServerSelect * pCmd = (tagServerSelect *)pInfo;
  498.  
  499.  
  500. <span style="white-space:pre"> </span>m_nCurrentServerID = pCmd->nServerID;
  501.  
  502.  
  503. <span style="white-space:pre"> </span>//创建登录UI层
  504. <span style="white-space:pre"> </span>UILayer* pLoginUiLayer = dynamic_cast<UILayer*>(getChildByTag(enTagStudioLoginLayer));
  505. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoginUiLayer==NULL);
  506.  
  507.  
  508. <span style="white-space:pre"> </span>UILayout *pLoginWidget = dynamic_cast<UILayout*>(pLoginUiLayer->getWidgetByName("LoginLayer"));
  509. <span style="white-space:pre"> </span>CC_BREAK_IF(pLoginWidget==NULL);
  510.  
  511.  
  512.  
  513.  
  514. <span style="white-space:pre"> </span>//服务器名称label
  515. <span style="white-space:pre"> </span>CCDictionary *pDicLang = CCDictionary::createWithContentsOfFile("ui_xml/serverselect_xml.xml");
  516. <span style="white-space:pre"> </span>CC_BREAK_IF(pDicLang==NULL);
  517. <span style="white-space:pre"> </span>CCString *pStrServerName = dynamic_cast<CCString*>(pDicLang->objectForKey("server_name"));
  518.  
  519.  
  520. <span style="white-space:pre"> </span>char szName[NAME_LEN] = {0};
  521. <span style="white-space:pre"> </span>sprintf(szName,m_nCurrentServerID);
  522.  
  523.  
  524. <span style="white-space:pre"> </span>UILabel* pServer_Name_Lable = dynamic_cast<UILabel*>(pLoginWidget->getChildByName("MainUi")->getChildByName("Server_Bg")->getChildByName("Server_Name_Lable"));
  525. <span style="white-space:pre"> </span>CC_BREAK_IF(pServer_Name_Lable==NULL);
  526.  
  527.  
  528. <span style="white-space:pre"> </span>pServer_Name_Lable->setText(szName);
  529.  
  530.  
  531.  
  532.  
  533. <span style="white-space:pre"> </span>//显示正常登录模块
  534. <span style="white-space:pre"> </span>UILayout* pNormalLogin_Panel = dynamic_cast<UILayout*>(pLoginWidget->getChildByName("MainUi")->getChildByName("NormalLogin_Panel"));
  535. <span style="white-space:pre"> </span>CC_BREAK_IF(pNormalLogin_Panel==NULL);
  536. <span style="white-space:pre"> </span>pNormalLogin_Panel->setEnabled(true);
  537. <span style="white-space:pre"> </span>pNormalLogin_Panel->setVisible(true);
  538.  
  539.  
  540. <span style="white-space:pre"> </span>}break;
  541. <span style="white-space:pre"> </span>}
  542. }
  543.  
  544.  
  545. void CNFLoginScene::OnBtnSwitchToRegisterCallBack( CCObject *pSender,TouchEventType type )
  546. {
  547. <span style="white-space:pre"> </span>do
  548. <span style="white-space:pre"> </span>{
  549. <span style="white-space:pre"> </span>switch (type)
  550. <span style="white-space:pre"> </span>{
  551. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  552. <span style="white-space:pre"> </span>{
  553.  
  554.  
  555. <span style="white-space:pre"> </span>//创建登录UI层
  556. <span style="white-space:pre"> </span>UILayer* pRegisterUiLayer = UILayer::create();
  557. <span style="white-space:pre"> </span>CC_BREAK_IF(pRegisterUiLayer==NULL);
  558.  
  559.  
  560. <span style="white-space:pre"> </span>UILayout *pRegisterWidget = dynamic_cast<UILayout*>(GUIReader::shareReader()->widgetFromJsonFile("NormalRegister.json"));
  561. <span style="white-space:pre"> </span>CC_BREAK_IF(pRegisterWidget==NULL);
  562. <span style="white-space:pre"> </span>pRegisterUiLayer->addWidget(pRegisterWidget);
  563. <span style="white-space:pre"> </span>pRegisterWidget->setName("RegistLayer");
  564. <span style="white-space:pre"> </span>pRegisterWidget->setSize(getContentSize());
  565.  
  566.  
  567.  
  568.  
  569. <span style="white-space:pre"> </span>//设置返回登录按钮回调
  570. <span style="white-space:pre"> </span>UIButton* pBtn_Back = dynamic_cast<UIButton*>(pRegisterWidget->getChildByName("MainUi")->getChildByName("Btn_Return"));
  571. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_Back==NULL);
  572. <span style="white-space:pre"> </span>pBtn_Back->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBackToLoginCallBack));
  573.  
  574.  
  575. <span style="white-space:pre"> </span>//注册按钮回调
  576. <span style="white-space:pre"> </span>UIButton* pBtn_rg = dynamic_cast<UIButton*>(pRegisterWidget->getChildByName("MainUi")->getChildByName("NormalRegister_Panel")->getChildByName("Btn_rg"));
  577. <span style="white-space:pre"> </span>CC_BREAK_IF(pBtn_rg==NULL);
  578. <span style="white-space:pre"> </span>pBtn_rg->addTouchEventListener(this,toucheventselector(CNFLoginScene::OnBtnRegisterCallBack));
  579.  
  580.  
  581. <span style="white-space:pre"> </span>addChild(pRegisterUiLayer,enTagStudioRegisterLayer);
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588. <span style="white-space:pre"> </span>}break;
  589. <span style="white-space:pre"> </span>default:
  590. <span style="white-space:pre"> </span>break;
  591. <span style="white-space:pre"> </span>}
  592.  
  593.  
  594. <span style="white-space:pre"> </span>return ;
  595. <span style="white-space:pre"> </span>} while (false);
  596. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBtnRegisterCallBack Error!");
  597. }
  598.  
  599.  
  600.  
  601.  
  602. void CNFLoginScene::OnBtnLoginCallBack( CCObject *pSender,TouchEventType type )
  603. {
  604. <span style="white-space:pre"> </span>do
  605. <span style="white-space:pre"> </span>{
  606. <span style="white-space:pre"> </span>switch (type)
  607. <span style="white-space:pre"> </span>{
  608. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  609. <span style="white-space:pre"> </span>{
  610.  
  611.  
  612.  
  613.  
  614. <span style="white-space:pre"> </span>//读取角色信息
  615. <span style="white-space:pre"> </span>CNFServerRoleSelectInfoVec RoleSelectInfoVec;
  616. <span style="white-space:pre"> </span>CNFServerDataManager::SharedData()->GetRoleSelectInfo(RoleSelectInfoVec);
  617. <span style="white-space:pre"> </span>CNFServerRoleSelectInfoVec::iterator itRole=RoleSelectInfoVec.begin();
  618.  
  619.  
  620.  
  621.  
  622. <span style="white-space:pre"> </span>for (;itRole!=RoleSelectInfoVec.end();itRole++)
  623. <span style="white-space:pre"> </span>{
  624. <span style="white-space:pre"> </span>if (itRole->nState>=0)
  625. <span style="white-space:pre"> </span>{
  626. <span style="white-space:pre"> </span>//人物选择场景
  627. <span style="white-space:pre"> </span>CCScene * pScene = CNFRoleSelectLayer::scene();
  628. <span style="white-space:pre"> </span>CC_BREAK_IF(pScene==NULL);
  629. <span style="white-space:pre"> </span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));
  630.  
  631.  
  632. <span style="white-space:pre"> </span>return;
  633. <span style="white-space:pre"> </span>}
  634. <span style="white-space:pre"> </span>}
  635.  
  636.  
  637.  
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.  
  645.  
  646.  
  647. <span style="white-space:pre"> </span>//人物选择场景
  648. <span style="white-space:pre"> </span>CCScene * pScene = CNFTeamCreateLayer::scene();
  649. <span style="white-space:pre"> </span>CC_BREAK_IF(pScene==NULL);
  650. <span style="white-space:pre"> </span>CCDirector::sharedDirector()->replaceScene(CCTransitionFade::create(1.f,pScene));
  651.  
  652.  
  653. <span style="white-space:pre"> </span>}break;
  654. <span style="white-space:pre"> </span>default:
  655. <span style="white-space:pre"> </span>break;
  656. <span style="white-space:pre"> </span>}
  657.  
  658.  
  659. <span style="white-space:pre"> </span>return ;
  660. <span style="white-space:pre"> </span>} while (false);
  661. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBtnLoginCallBack Error!");
  662. }
  663.  
  664.  
  665.  
  666.  
  667. void CNFLoginScene::OnAccountTextFieldEvent( CCObject *pSender,TextFiledEventType type )
  668. {
  669. <span style="white-space:pre"> </span>do
  670. <span style="white-space:pre"> </span>{
  671.  
  672.  
  673.  
  674.  
  675. <span style="white-space:pre"> </span>return;
  676. <span style="white-space:pre"> </span>} while (false);
  677.  
  678.  
  679. }
  680.  
  681.  
  682.  
  683.  
  684. /************************************************************************/
  685. /*<span style="white-space:pre"> </span>注册模块<span style="white-space:pre"> </span>*/
  686. /************************************************************************/
  687.  
  688.  
  689.  
  690.  
  691. void CNFLoginScene::OnBackToLoginCallBack( CCObject *pSender,TouchEventType type )
  692. {
  693. <span style="white-space:pre"> </span>do
  694. <span style="white-space:pre"> </span>{
  695. <span style="white-space:pre"> </span>switch (type)
  696. <span style="white-space:pre"> </span>{
  697. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  698. <span style="white-space:pre"> </span>{
  699.  
  700.  
  701.  
  702.  
  703. <span style="white-space:pre"> </span>removeChildByTag(enTagStudioRegisterLayer);
  704.  
  705.  
  706.  
  707.  
  708. <span style="white-space:pre"> </span>}break;
  709. <span style="white-space:pre"> </span>default:
  710. <span style="white-space:pre"> </span>break;
  711. <span style="white-space:pre"> </span>}
  712.  
  713.  
  714. <span style="white-space:pre"> </span>return ;
  715. <span style="white-space:pre"> </span>} while (false);
  716. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBackToLoginCallBack Error!");
  717. }
  718.  
  719.  
  720.  
  721.  
  722. void CNFLoginScene::OnBtnRegisterCallBack( CCObject *pSender,TouchEventType type )
  723. {
  724. <span style="white-space:pre"> </span>do
  725. <span style="white-space:pre"> </span>{
  726. <span style="white-space:pre"> </span>switch (type)
  727. <span style="white-space:pre"> </span>{
  728. <span style="white-space:pre"> </span>case TOUCH_EVENT_ENDED:
  729. <span style="white-space:pre"> </span>{
  730.  
  731.  
  732.  
  733.  
  734. <span style="white-space:pre"> </span>CCLog("CNFLoginScene::OnBtnRegisterCallBack");
  735.  
  736.  
  737. <span style="white-space:pre"> </span>}break;
  738. <span style="white-space:pre"> </span>default:
  739. <span style="white-space:pre"> </span>break;
  740. <span style="white-space:pre"> </span>}
  741.  
  742.  
  743. <span style="white-space:pre"> </span>return ;
  744. <span style="white-space:pre"> </span>} while (false);
  745. <span style="white-space:pre"> </span>CCLog("Fun CNFLoginScene::OnBtnRegisterCallBack Error!");
  746. }
  1.  
  1.  
  1. 由于这一款游戏的服务器代码没有公开 没有办法分析 但是现有点代码已经够我分析的了

猜你在找的Cocos2d-x相关文章