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

在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.height
	Director::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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值