cocos2dx 项目经验之截图设置弹出暂停界面

cocos2d-x 游戏暂停界面 游戏暂停界面: cocos2d-x中游戏暂停界面提供的思路是用pushScene()和popScne(),即推进和弹出场景,当游戏暂停时,推进(pushScene())暂停场景,之前运行的场景将会自动暂停,然后我们可以在暂停场景中操作,如Resume,ReStart,Quit等,当我们不再需要暂停场景时,可以popScene()将暂停场景弹出。(场景就像一张纸,我们推进一个场景,相当于在这张纸上 阅读详情

在项目开发时,发现如果用CCDirector::sharedDirector()->pause();之后精灵是做不了动作的,所以我寻求了另一种方法,

原理就是要弹出暂停界面是就用push(暂停场景),及顾名思义推出一个暂停界面,将游戏界面暂停压入栈中,当暂停界面响应后(或做动作完后)就可以pop,及拿出意思,推出栈,及之前的游戏界面会继续开始。

先新建一个暂停类PauseLayer

下面是部分实现 CCRenderTexture 是传过来的截图纹理 :

CCScene* PauseLayer::scene( CCRenderTexture *sqr, bool isFlip )
{
	CCScene *scene = CCScene::create();
	CCSize size = CCDirector::sharedDirector()->getWinSize();
	CCSprite *_spr = CCSprite::createWithTexture(sqr->getSprite()->getTexture());
	_spr->setPosition(ccp(size.width / 2, size.height / 2));
	_spr->setFlipY(isFlip);  //是否翻转
	_spr->setColor(ccGRAY);  //颜色(变灰暗)
	scene->addChild(_spr);
	PauseLayer* layer = PauseLayer::create();
	scene->addChild(layer);

	return scene;
	CCDirector::sharedDirector()->pause();
}
暂停之后恢复游戏使用

	CCDirector::sharedDirector()->popScene();
然后就有个新的问题了,如果我的手机点击了桌面键(Home),正在进行的游戏需要变成暂停状态,该如何弄的呢,一开始我想到了用控制home的监听,但结果似乎起不来作用(它直接响应了回到手机主界面),所以只能在AppDelegate类里面修改

必须在这两个函数动手脚applicationDidEnterBackground(),applicationWillEnterForeground()

第一个表示的是退出游戏界面时(及桌面不显示游戏界面时),第二个表示的是回到游戏界面时

void AppDelegate::applicationDidEnterBackground()
{
	CCDirector::sharedDirector()->stopAnimation();
	SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
	CCSize size = CCDirector::sharedDirector()->getWinSize();//在游戏界面类里的scene定义一个tag为30

	CCRenderTexture* renderTexture = CCRenderTexture::create(size.width, size.height);
	renderTexture->retain();
	CCScene *s = CCDirector::sharedDirector()->getRunningScene();

	CCLog("%d", s->getTag());

	if (s->getTag() == 30)
	{
		renderTexture->begin();
		s->visit();
		renderTexture->end();
		CCScene* pause = PauseLayer::scene(renderTexture, true);
		Game::pauseflag=true;
		pause->setTag(30+1);
		CCDirector::sharedDirector()->pushScene(pause);
	}else
	{
		CCLog("do nothing");
	}

}
void AppDelegate::applicationWillEnterForeground()
{
	CCDirector::sharedDirector()->startAnimation(); 
	int tag = CCDirector::sharedDirector()->getRunningScene()->getTag();


	switch (tag)
	{
	case 31:

               //回到来后判断是否为暂停界面 是的话不恢复声音
		CCLog("Tag = 31 do nothing");
		break;
	default:
		CCLog("Tag = other do something");
		SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
		break;
	}
}
就这样子就搞定了 加油、。。。。。



Cocos2d-x游戏暂停、继续游戏、重新开始界面的实现---之游戏开发《赵云要格斗》 《赵云要格斗》系列博文对应的代码与资源,不懂处看博文:http://blog.youkuaiyun.com/evankaka/article/details/42936117 立即下载

相关推荐

PyQtWebEngine安装避坑指南:快速解决ModuleNotFoundError

本文详细解析了PyQt5开发中常见的ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'错误。核心原因是PyQt5 5.11版本后,网页引擎组件被独立为PyQtWebEngine包。文章对比了退回旧版本、独立安装及使用Conda等多种解决方案,并提供了针对Windows、macOS和Linux不同平台的实战安装指南与验证方法,帮助开发者快速解决依赖问题。

weixin_29056101的博客 427

【Cocos Creator 实战】08 - 如何让拼图游戏暂停/继续

文章目录概览本期实现效果项目资源开搞需求分析项目结构场景修改按钮点击事件按钮点击动画核心代码总结知识点下一步 继续丰富游戏内容哈。 上一篇地址:【Cocos Creator 实战】07 - 如何让拼图回到原位(优化自动吸附规则) 概览 本期实现效果 先看看我们今天想要实现的效果吧。 项目资源 项目地址:https://github.com/BottleMan/Bottle-s-Jigsaw/t...

Bottle's Blog 5万+

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1692

[CocosCreator]暂停,恢复,退出

退出游戏 cc.director.end(); End the life of director in the next frame 暂停游戏 cc.director.pause(); cc.game.pause(); cc.director.pause(): Pause the director's ticker, only involve the game logic execution. ...

iningwei的博客 5125

天池长期赛:二手车价格预测(422方案分享)

本次比赛是一次很好的锻炼数据挖掘能力的入门赛,从EDA-数据清洗-特征工程-模型调参-模型融合,能够完整的学习到大数据的分析和挖掘,值得历练。

weixin_46685991的博客 1万+

Doris实战——结合Flink构建极速易用的实时数仓

Doris实战——结合Flink构建极速易用的实时数仓

爱吃辣条的博客 8229

cocos2d-x学习之将各种弹窗按顺序显示出来

按顺序显示弹窗

qq_33335724的博客 652

合肥工业大学嵌入式系统原理实验报告

GPKDAT 的6、7引脚设置低电平,设置GPKDAT = 0x30则34灯亮12灯灭,GPKDAT 的4、5、6、7引脚全为高电平,设置GPKDAT = 0xf0,则led灯全灭。注意在烧写时要连接主机后面的USB接口,烧写完成后,要关闭开发板电源,将S2拨动开关置于NAND位置,然后重新开启开发板电源, 则开发板运行刚刚烧入的裸机程序。实验修改要求:在延时不变的条件下,将原程序中四个LED全亮,然后全灭的显示状态,修改为“四个全亮,然后1和2亮(3和4灭),然后3和4亮(1和2灭),最后全灭”。

Martin-share的博客 3097

cocos2dx 持续学习(三) 场景切换、弹出对话框

一、首先总结一下场景切换,通常来说使用下面类似的代码就可以执行场景切换 Director::getInstance()->replaceScene(TransitionFade::create(0.3f, secondScene::createScene())) 这种情况下会把当前场景释放掉,这在当我不需要回到当前场景的时候是可行的。但是,有很多情形是需要回到当前场景的,比如我自己设计的小

u011472058的博客 761

详解Linux下使用vscode编译运行和调试C/C++

本教程将具体详解使用Visual Studio Code在Linux环境下使用C/C++方法。 GCC C++ 编译器 (g++) 和 GDB 调试器的方法。 GCC是GNU 编译器集合; GDB 是 GNU 调试器。 1.先决条件 安装Visual Studio Code. 安装C++拓展插件。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令

休的博客 6241

【WRF安装】完整自动化 WRF-ARW/WRF-Chem 安装脚本(多服务器测试)

【WRF安装】完整自动化 WRF-ARW/WRF-Chem 安装脚本(多服务器测试)

WW、forever的博客 285

cocos2d-x 弹入、弹出效果(以菜单为例子)

弹入和弹出菜单为了使动作更平滑,涉及到动作组合。(CCMoveTo 、CCEaseExponentialOut)(菜单背景图位置仅为示范例子,还需调整) 以菜单的背景图为例: //生成菜单背景图 CCSprite* MainMenuBG = CCSprite::create("menu_bg.png"); MainMenuBG->setPosition(ccp(visibleSize.

u012839224的专栏 1252

RagFlow专题三、RagFlow 关键技术(向量数据库、文档分块、Prompt 设计与召回排序优化)

FAISS 是由 Meta(Facebook)开源的高效向量检索库,适用于大规模向量搜索任务。,并了解了如何通过 RagFlow 机制优化信息检索和生成质量。(FAISS、Milvus、ES)用于高效存储和检索语义向量。提高 LLM 生成效果,增强 RagFlow 任务质量。(分块)策略,将文档拆分成更小的片段,提高检索效率。提高检索精准度,避免文本过长导致信息丢失。提升检索结果的相关性,提高生成质量。当多个检索结果被返回时,我们需要一个。在前一篇文章中,我们详细探讨了。在 RagFlow 任务中,

xiaoqi270620903的专栏 3040

cocos2dx小知识——暂停界面的实现

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://shahdza.blog.51cto.com/2410787/1549515     游戏需要暂停时,一般都是将游戏界面变灰,暂停所有动作,然后弹出一堆的按钮。     这该如何实现暂停界面呢? 1、定义     我定义了两个类:Ga

whl_cxy的专栏 1300

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

cocos2dx 3.x截图功能实现

转自--http://blog.youkuaiyun.com/evankaka/article/details/42936117 本文要实现游戏中的暂停、重新开始。将当前界面截图,然后用这张图去构造一个层(以这张图为背景),然后加个按钮,主界面点暂停时,pushScene(),然后转到游戏暂停界面,当在游戏暂停界面点继续游戏popScne()。在cocos2dx中推进(pushScene())暂停场

雪儛 992

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

cocos2dx番外篇——暂停界面的实现

游戏需要暂停时,一般都是将游戏界面变灰,暂停所有动作,然后弹出一堆的按钮。这该如何实现暂停界面呢?1、定义我定义了两个类:Game游戏类、GamePause暂停类。Game类中调用doPause()函数进行游戏暂停,却换到GamePause暂停画面。2、doPause()这里需要用到CCRenderTexture这个动态纹理类,顾名思义...

weixin_33877885的博客 391

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

cocos2dx监听home键,锁屏,后台转前台暂停功能

根据cocos2d-x游戏原理当home键或者锁屏键被按下,游戏处于后台状态就会调用AppDelegate.cpp里面的方法applicationDidEnterBackground() 其实按照这个方法的意思就可以知道到底是怎么回事了。所以我们就在这个方法内部写自己的东西。 首先,我说一下原理, 自己写了一个Dialog 模态对话框(这个可以搜到), 然后写了自己写了一个方法 CCScen

爱去玩的专栏 4598

cocos2dx Android接入芒果插屏广告

爬过了各种各样的坑,我们终于有一个像样的小游戏了!那么,接下来的工作就是接入广告,上线盈利 芒果是一个聚合广告平台,可以接入芒果后播放多盟、百度、AdMob等灰常多家的广告,非常方便。 广告平台配置 注册芒果账号:http://www.adsmogo.com/ 进入芒果后选择 App管理 -> 添加App,填好各种信息后点击下方的 ‘添加App’ 按钮,这里过程很简单,我就不截图啦。 点

kuki的专栏 2765
上一篇: 【cocos2d-x入门实战】微信飞机大战之十五:跨平台移植和广告植入
下一篇: cocos2dx中的CCCallFunc,CCCallFuncN,CCCallFuncND,CCCallFuncO比较
cocos_Wei
博客等级 码龄15年 77粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值