白鹭引擎v2.0+ API
在白鹭引擎2.0+ 版本,通过监听stage
对象的egret.Event.ACTIVATE
和egret.Event.DEACTIVATE
事件实现生命周期控制,代码示例如下:
stage.addEventListener(egret.Event.ACTIVATE,()=>{ console.log("app 进入前台"); },this); stage.addEventListener(egret.Event.DEACTIVATE,()=>{ console.log("app 进入后台"); },this);
上述方法的缺点是:
- 对象的“生命周期”行为与
stage
对象耦合。 - 由于一些 HTML5 游戏的运行环境(比如手机QQ等)设置了独有的 API 而非 HTML5 标准 API,开发者难以对白鹭引擎的底层进行自定义扩展。
白鹭引擎v4.1+ API
白鹭引擎 4.1 版本引入生命周期管理器:egret.lifecycle
。其代码示例如下:
egret.lifecycle.onPause = ()=> { console.log("app 进入后台"); egret.ticker.pause(); // 关闭渲染与心跳 } egret.lifecycle.onResume = ()=> { console.log("app 进入前台"); egret.ticker.resume(); // 打开渲染与心跳 }
针对不同的游戏运行环境,开发者可以对生命周期管理器进行扩展,以手机QQ举例,其扩展如下:
// 手机QQ注册了 appInBackgound 这一变量,在 TypeScript 中进行声明,防止报错 declare interface Window { appInBackgound:boolean; } egret.lifecycle.addLifecycleListener( (context)=>{ // 方法一:通过事件监听的方式进行通知 document.addEventListener("qbrowserVisibilityChange", function(e:any){ if (e.hidden){ context.pause(); } else{ context.resume(); }; }); // 方法二:在每一帧进行判断 context.onUpdate = ()=> { if (window.appInBackgound){ context.pause(); } else{ context.resume(); } } } )
完整Demo:
/* 初始化事件 */ private initLifecycle(): void { egret.lifecycle.addLifecycleListener((context) => { // custom lifecycle plugin document.addEventListener("visibilitychange", function (e) { // document.title = document.hidden ? "用户离开了" : "用户回来了"; if (document.hidden) { // 网页被挂起 ---- 暂停音乐 console.log(" 网页被挂起"); context.pause(); } else { // 网页被呼起 ---- 播放音乐 console.log(" 网页被呼起"); context.resume(); } console.log(document); console.log(e); }); document.addEventListener("qbrowserVisibilityChange", function (e: any) { if (e.hidden) { // 手Q被挂起 console.log(" 手Q被挂起"); context.pause(); } else { // 手Q被呼起 console.log(" 手Q被呼起"); context.resume(); }; }); context.onUpdate = () => { } }) egret.lifecycle.onPause = () => { console.log("APP 进入后台"); StageReferance.stage.frameRate = 0.01; egret.ticker.pause(); // 关闭渲染与心跳 SoundMusic.stop(); } egret.lifecycle.onResume = () => { console.log("APP 进入前台"); StageReferance.stage.frameRate = 30; egret.ticker.resume(); // 打开渲染与心跳 SoundMusic.resume(); } }
相关推荐
Unity3d 微信小程序(小游戏)项目实现接入广告(banner、插屏和激励广告等)Demo源码。 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/128775839 广告虽然能够给平台和开发者带来一定的收益,...
汽车小游戏.zip webgl
webGL开发指南文档, 学习webGL必备手册,前端3D可视化
webgl文档开发教程
WebGL 是一项在网页上渲染三维图形的技术,也是HTML5 草案的一部分。 《WebGL编程指南》的主要篇幅讲解了WebGL 原生API 和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSL ES)等等,...
webgl基于opengl es2.0,文档外加apk
小游戏webgl与canvas2d混合使用demo,将context2d作为纹理用webgl绘制
pixi.js 并不是一个游戏引擎。它是世界范围内最强大的WebGL渲染引擎!
在原始WebGL 2中实现不同复杂度的渲染算法
通过渲染一张DEM的具体例子,了解在WebGL中颜色渲染的过程。
效果请见https://blog.csdn.net/vily_lei/article/details/86097324 直接用webgl接口写的高效2d渲染表现的火爆射击小游戏,可以在任何支持webGL的移动或者PC端运行。
效果超棒的Webgl模型-
(请认真阅读此描述)都知道unity 发布出来的webgl是不能使用system.IO文件流的,所以无法通过unity创建文本,通过以下文章可实现网页交互生成文档。 https://blog.csdn.net/qq_33155437/article/details/124124771 ...
讲解了WebGL 原生API 和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSL ES)等等,也讲解了使用WebGL 渲染三维场景的一般技巧,如光照、阴影、雾化等等
untiy webgl 打开 PDF文件
用 WebGL 打造 HTML5 游戏引擎平台.pdf 用 WebGL 打造 HTML5 游戏引擎平台.pdf 用 WebGL 打造 HTML5 游戏引擎平台.pdf
超快的2d渲染引擎,支持webgl和canvas渲染,让游戏制作变得超级容易
本书?前可以?把?教你使用WebGL进行编程,?且在不断更 新。