zoukankan      html  css  js  c++  java
  • 分析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;			//当前serverID
    	int			m_nServerTotalNum;			//server的总数量
    
    public:
    	static CCScene * scene();
    
    	static CNFLoginScene * CreateLayer();
    
    	//消息接收
    	virtual void RecMsg(int nMsgID,void* pInfo,int nSize);
    
    protected:
    	virtual void onEnter();
    
    	//资源预载入
    	void LoadRec();			
    
    	void OnLoadRecCallBack(CCObject *pObj);		//回调:资源载入
    //	void OnLoadLastRecCallBack(CCObject *pObj);	//回调:最后一个资源载入
    
    	//异步载入骨骼资源的回调
    	void OnLoadArmatureData(float percent);
    
    	virtual void InitSceneUI();					//在这里载入该图层专用的资源
    
    	//---------------登录页button回调----------------
    	void OnBtnEnterCallBack(CCObject *pSender, TouchEventType type);			//開始游戏
    	void OnBtnServerSelectCallBack(CCObject *pSender, TouchEventType type);		//选择server
    	void OnBtnSwitchToRegisterCallBack(CCObject *pSender, TouchEventType type);	//跳转到注冊页
    	void OnBtnLoginCallBack(CCObject *pSender, TouchEventType type);			//登录
    	void OnAccountTextFieldEvent(CCObject *pSender, TextFiledEventType type);
    
    
    
    
    	//---------------注冊页button回调----------------
    	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.联网:得到serverID                                                                     */
    <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>//设置切换serverbutton回调
    <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>////创建server名称背景
    <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>创建button                                                                     */
    <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>////选择serverbutton
    <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>////serverlabel
    <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>////server名称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>//设置注冊button回调
    <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>//设置登录button回调
    <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>//设置注冊button回调
    <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>////进入游戏button
    <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>//设置进入游戏button回调
    <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>//创建切换server层
    <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>//server名称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>//设置返回登录button回调
    <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>//注冊button回调
    <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!");
    }
    
    因为这一款游戏的server代码不公开  没办法分析 但是,现有的点代码已经够我分析

    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    INewPolygonFeedback接口(实时显示所画多边形的面积)
    RichTextBox追加文本信息,并根据信息的多少自动下移
    Google tile和TMS的索引算法
    出差咸阳
    失败的 炸羊排
    年中总结
    Oracle 两个表之间的数据更新
    ArcEngine下,实现图形的擦除操作(Erase操作)
    C#中使用ListView动态添加数据不闪烁(转)
    出差略阳
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4645476.html
Copyright © 2011-2022 走看看