使用CCRenderTexture来是实现游戏的暂停

来源:互联网 发布:西门子编程电缆价格 编辑:程序博客网 时间:2024/04/30 14:42
在手机游戏中,经常会有暂停按钮,使游戏处于暂停状态,那么怎样用Cocos2d-x实现呢?
下面看一下在cocos2d-x中CCRenderTexture的用法:
CCRenderTexture类主要是用来动态创建纹理
1.指定要创建的纹理的宽高。
2.调用begin()方法//这个方法会启动OpenGL,并且接下来,任何绘图的命令都会渲染到CCRenderTexture中


,而不是画到屏幕上。
3.绘制纹理,可以使用cocos2d-x对象里已经定义好的visit方法。
4.调用end()方法//这个方法会渲染纹理,并且会关闭渲染至CCRenderTexture的通道。
当点击暂停按钮时,在方法里添加如下代码:
{
CCSize m_winSize = CCDirector::sharedDirector() -> getWinSize();
CCRenderTexture* screen = CCRenderTexture::create(m_winSize.width,m_winSize.height);
CCScene* scene = CCDirector::sharedDirector() -> getRunningScene();//获取正在运行的场景
screen -> begin();
scene -> visit();
screen -> end();
screen -> saveToFile("myCurScene.png",kCCImageFormatPng);
CCDirector::sharedDirector() -> pushScene(SetLayer::scene(screen,true));
}


然后在SetLayer类中的scene方法里,这样实现:
CCScene* SetLayer::scene(CCRenderTexture* sqr,bool isFlip)
{
  CCScene* scene = CCScene::create();
  CCSprite* bg = CCSprite::createWithTexture(sqr -> getSprite() -> getTexture());
  bg -> setAnchorPoint(CCPointZero);
  bg -> setPosition(CCPointZero);
  bg -> setFilpY(isFlip);
  bg -> setColor(ccGRAY);//ccc3(166,166,166);//适合暂停时阴影
  scene -> addChild(bg);
  SetLayer* layer = SetLayer::create();
  scene -> addChild(layer);
  return scene;
}


在SetLayer类中,点击继续游戏按钮时,这个方法这样实现:
CCDirector::sharedDirector() -> popScene();


最后就完成了游戏暂停按钮的使用方法。当然类似的方法还有很多,这里就不一一实现了。
0 0