在cocos2dx中的pushScene()中应用截屏函数

来源:互联网 发布:杨玉环历史评价知乎 编辑:程序博客网 时间:2024/05/05 19:35

在cocos2dx中,pushScene创建一个场景,而场景的背景是黑色的,目前我还没有找到合适的方法使其透明,所以在网上找到一个方法替代,就是截屏

先上代码:

void ControlLayer::gameOverBtn(Ref* pSender){//获取屏幕大小auto visibleSize=Director::getInstance()->getVisibleSize();//创建一个RenderTexture对象,用于保存截取的图片RenderTexture* texture = RenderTexture::create(visibleSize.width, visibleSize.height);//开始截屏texture->begin();//得到当前正在运行的场景并截取图片,截取图片的范围是visibleSize.width, visibleSize.heightDirector::getInstance()->getRunningScene()->visit();texture->end();//把截取的图片传递给要弹出的场景内Director::getInstance()->pushScene(GameOverScene::createScene(texture));}



TenderTexture 命名空间为cocos2d::

包含头文件#include“cocos2d.h”

然后再对应的场景中创建如下代码:

GameOverScene是一个继承Layer的自定义类

类中包含函数:

static cocos2d::Scene * createScene(cocos2d::RenderTexture * spr);

这个是函数的实现:

Scene * GameOverScene::createScene(RenderTexture *spr){Scene * scene = Scene::create();GameOverScene * layer = GameOverScene::create();scene->addChild(layer, 1);auto visibleSize = Director::getInstance()->getVisibleSize();auto s = Sprite::createWithTexture(spr->getSprite()->getTexture());s->setPosition(visibleSize / 2);s->setScaleY(-1);s->setOpacity(50);scene->addChild(s, 1);return scene;}

这样就可以在新场景中看到原场景的游戏内容了:

如下图所示


0 0