1. 程式人生 > >哇!板球 源代碼分析一

哇!板球 源代碼分析一

etl 開啟 site 全部 count-1 util track jsb news

遊戲主菜單頁面

技術分享

BeginLayer類封裝該頁面。init函數初始化該頁面布景

該頁面背景

    isDialog = false;
    setKeypadEnabled(true);    //開啟按鍵事件
    CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
    CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();    //獲取可見區域原點坐標
	CCSprite* bSprite = CCSprite::create("pic/background.png");//背景圖片
	bSprite->setPosition(ccp(origin.x, origin.y));
	bSprite->setAnchorPoint(ccp(0, 0));//默認錨點為0.5,0.5
	this->addChild(bSprite, 0);


創建菜單項按鍵
主菜單鍵及回調

   	 CCMenuItemImage *continueItem = CCMenuItemImage::create
	 (
		  "menuContinue.png",     //平時的圖片
		  "menuContinue2.png",   //選中時的圖片
		  this,
		  menu_selector(BeginLayer::continueSence)//點擊時運行的回調方法
	 );

繼續鍵及回調

	 CCMenuItemImage *continueItem = CCMenuItemImage::create
	 (
		  "menuContinue.png",     //平時的圖片
		  "menuContinue2.png",   //選中時的圖片
		  this,
		  menu_selector(BeginLayer::continueSence)//點擊時運行的回調方法
	 );

成就鍵及回調

	 CCMenuItemImage *achievementsItem = CCMenuItemImage::create
	 (
		  "menuAchievements.png",     //平時的圖片
		  "menuAchievements2.png",   //選中時的圖片
		  this,
		  menu_selector(BeginLayer::achievementsSence)//點擊時運行的回調方法
	 );

關於鍵及回調

	 CCMenuItemImage *aboutItem = CCMenuItemImage::create
	 (
		  "menuAbout.png",     //平時的圖片
		  "menuAbout2.png",   //選中時的圖片
		  this,
		  menu_selector(BeginLayer::aboutSence)//點擊時運行的回調方法
	 );

設置鍵及回調

	 CCMenuItemImage *settItem = CCMenuItemImage::create
	 (
		  "set.png",     //平時的圖片
		  "set2.png",   //選中時的圖片
		  this,
		  menu_selector(BeginLayer::setSence)//點擊時運行的回調方法
	 );


創建標題

	CCSprite* tSprite = CCSprite::create("pic/title.png");
	//設置精靈對象的位置
	tSprite->setPosition(ccp(origin.x, origin.y+visibleSize.height-207));
	tSprite->setAnchorPoint(ccp(0, 0));
	this->addChild(tSprite, 3);

組合成菜單對象

		pMenu = CCMenu::create(continueItem,newMenuItem,achievementsItem,aboutItem,settItem,NULL);
		pMenu->setPosition(CCPointZero);
		this->addChild(pMenu, GAME_LEVEL_WYF);

為菜單項出場加入動畫

		CCNode* child = NULL;
		CCArray * pArray = pMenu->getChildren();//獲取全部菜單項
		int count = pArray->count();//個數
		for(int m=0;m<count;m++)//遍歷菜單項
		{
			child = (CCNode*)(pArray->objectAtIndex(m));//每一個菜單項
			child->setPosition(ccp(400,550));//初始位置
			CCActionInterval* moveTo1 = CCMoveTo::create(0.2f,ccp(400,-40));
			CCActionInterval* moveTo2 = CCMoveTo::create(0.25f*(count-m),ccp(400,80+80*(count-1-m)));
			CCActionInterval* move_ease_in2 = CCEaseElasticOut::create(moveTo2);//moveTo2振幅效果
			CCDelayTime *delay = CCDelayTime::create(0.2f*(count-m-1));//每一個菜單項出場間歇時間
			CCSequence* seq = CCSequence::create(delay,moveTo1,move_ease_in2, NULL);//
			child->runAction(seq);//運行
			
		}

主菜單鍵回調。通過調用toNewGameLayer來切換到NewGameLayer場景,真正的遊戲主頁面

void BeginLayer::newSence(CCObject* pSender)
{
	tsm->toNewGameLayer(1);//第一關
}

繼續鍵回調,先獲取上次的數據。然後切換到對應關卡

void BeginLayer::continueSence(CCObject* pSender)
{
	//int gK=JNIUtil::getInt("continue",1,classPath.c_str());
	tsm->toNewGameLayer(1);
}

成就鍵回調,調用toAchieveLayer切換到AchieveLayer場景。來統計遊戲數據中玩家最高分、最高關卡

void BeginLayer::achievementsSence(CCObject* pSender)
{
	tsm->toAchieveLayer();
}

關於鍵回調。調用toHelpLayer切換到HelpLayer場景,提示遊戲幫助手冊

void BeginLayer::aboutSence(CCObject* pSender)
{
	tsm->toHelpLayer();
}

設置鍵回調,調用toSetLayer切換到SetLayer場景,設置遊戲音樂及音效

void BeginLayer::setSence(CCObject* pSender)
{
	tsm->toSetLayer();
}

返回鍵處理,調用toOutLayer切換到推出遊戲場景

void BeginLayer::keyBackClicked()
{
	if(isDialog)
	{
		return;
	}
	isDialog = true;
	//暫停聲音播放
	CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	tsm->toOutLayer();
}












哇!板球 源代碼分析一