html5游戏开发—Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现--之游戏开发《赵云要格斗》(10).pdf
Cocos2d-x游戏暂停、继续游戏、重新
开始界面的实现--之游戏开发《赵云要
格斗》(10)
Evankaka2015-01-2110:11:203020次阅读
本文要实现游戏中的暂停、重新开始。将当前界面截图,然后用这张图去构造一个层(以这
张图为背景),然后加个按钮,主界面点暂停时,pushScene(),然后转到游戏暂停界面,当
在游戏暂停界面点继续游戏popScne()。在Cocos2d-x中推进(pushScene())暂停场景,之前
运行的场景将会自动暂停,然后我们可以在暂停场景中操作,当我们不再需要暂停场景时,
可以popScene()将暂停场景弹出。重新开始游戏直接replaceScene()。
Cocos2d-x版本:2.2.5
工程环境:Windows7+VS2010
打开方式:将工程放在Cocos2d-x安装目录下的project文件夹下用VS打开
本文效果:
一、游戏暂停界面初步实现
思路:将当前界面截图,然后用这张图去构造一个层(以这张图为背景),然后加个按钮,主
界面点暂停时,pushScene(),然后转到游戏暂停界面,当在游戏暂停界面点继续游戏时po
pScne()。
首先看看自定义的游戏暂停的层:
头文件Gamepause.h
#ifndef__Gamepause__H__
#define__Gamepause__H__
#includecocos2d.h
USING_NS_CC;
classGamepause:publiccocos2d::CCLayer
{
public:
virtualboolinit();
staticcocos2d::CCScene*scene(CCRenderTexture*sqr);
CREATE_FUNC(Gamepause);
//继续游戏
voidmenuContinueCallback(CCObject*pSender);
private:
};
#endif//__Gamepause_H__
然后是实现文件
#includeGamepause.h
//传入一个CCrenderTexture
//相当于一个正在运行的游戏的截图作为这个暂停对话框的背景
//这样就看起来像是对话框在游戏界面之上,一般游戏当中都是这样子写的。
CCScene*Gamepause::scene(CCRenderTexture*sqr)
{
CCScene*scene=CCScene::create();
Gamepause*layer=Gamepause::create();
scene-addChild(layer,1);
//增加部分:使用Game界面中截图的sqr纹理图片创建Sprite
//并将Sprite添加到GamePause场景层中
//得到窗口的大小
CCSizevisibleSize=CCDirector::sharedDirector()-getVisibleSize
();
CCSprite*back_spr=CCSprite::createWithTexture(sqr-getSprite()
-getTexture());
back_spr-setPosition(ccp(visibleSize.width/2,visibleSize.height/
2));//放置位置,这个相对于中心位置。
back_spr-setFlipY(true);//翻转,因为UI坐标和OpenGL
坐标不同
back_spr-setColor(cocos2d::ccGRAY);//图片颜色变灰色
scene-addChild(back_spr);
returnscene;
}
boolGamepause::init()
{
if(!CCLayer::init())
{
returnfalse;
}
//得到窗口的大小
CCSizevisibleSize=CCDirector::sharedDirector()-getVisibleSize
();
//原点坐标
C