游戏下载链接:http://download.youkuaiyun.com/detail/a402813378/6275427
这个Demo的最后一篇,是制作GameOver窗口,这个窗口是游戏结束的窗口,讲完这篇这个Demo就已经结束了。
首先我们来看GameOver类的组成,和前面的一样由一个初始化函数和一个返回CCScene对象的函数组成,再加上回调函数添加一个文本来响应重玩功能,说完了,现在看类声明好了。
#ifndef __GAME_OVER_SCENE_H__
#define __GAME_OVER_SCENE_H__
#include "cocos2d.h"
using namespace cocos2d;
class GameOverScene : public CCLayer
{
public:
bool init();
static CCScene* scene();
CREATE_FUNC(GameOverScene);
private:
void replayMenuCallback(CCObject *pSender);
};
#endif
然后cpp文件这个类和Menu类基本上一样。添加一个文本GameOver(不响应消息),和一个replay文本(返回游戏),OK,看代码。
#include"GameOverScene.h"
#include"XSystem.h"
#include"GameManager.h"
#include"GlobalParam.h"
using namespace cocos2d;
CCScene* GameOverScene::scene()
{
CCScene* scene = NULL;
do
{
scene = CCScene::create();
CC_BREAK_IF(! scene);
GameOverScene* layer = GameOverScene::create();
CC_BREAK_IF(! layer);
scene->addChild(layer);
} while (0);
return scene;
}
bool GameOverScene::init()
{
bool bRet =false ;
do
{
CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCLabelTTF *mGameOverLab = CCLabelTTF::create("GameOver", MENU_FONT_NAME,35);
mGameOverLab->setPosition(XSystem::xccp(visibleSize.width/2,visibleSize.height *2/3));
this->addChild(mGameOverLab);
CCLabelTTF* rePlayerLab = CCLabelTTF::create("Replay", MENU_FONT_NAME, 35);
CCMenuItemLabel * replayItemLab = CCMenuItemLabel::create(
rePlayerLab,
this,
menu_selector(GameOverScene::replayMenuCallback)
);
CCMenu *menu =CCMenu::create(replayItemLab,NULL);
menu->setPosition(XSystem::xccp(visibleSize.width / 2, visibleSize.height / 2));
menu->alignItemsVertically();
this->addChild(menu);
bRet = true;
} while (0);
return bRet;
}
void GameOverScene::replayMenuCallback( CCObject* pSender )
{
GameManager::sharedGameManager()->runSceneWithId(GameManager::SCENE_ID_GAME);
}