白鹭引擎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(); } }
相关推荐
【标题】"汽车小游戏.zip webgl" 涉及的核心技术是WebGL,这是一种在网页浏览器中实现3D图形渲染的API,它基于OpenGL标准,并且完全融入了JavaScript语言,使得开发者无需安装任何插件就能在浏览器上创建交互式的3D...
在本文中,我们将深入探讨如何在Web开发中...总结来说,结合WebGL和Canvas2D可以在小游戏开发中创造出既高效又富有表现力的体验。通过熟练掌握这两种技术,你可以构建出跨越2D和3D维度的创新游戏,满足各种用户需求。
Unity3d 微信小程序(小游戏)项目实现接入广告(banner、插屏和激励广告等)Demo源码。 建议先看说明:https://blog.csdn.net/qq_33789001/article/details/128775839 广告虽然能够给平台和开发者带来一定的收益,...
"Threejs 开发指南:基于 WebGL 和 HTML5 在网页上渲染 3D 图形和动画" 本文将对 Threejs 开发指南进行详细的介绍,包括 Threejs 的重要性、与其他 3D 渲染技术的比较、为什么要使用 Threejs 等。 首先,Threejs ...
Unity WebGL 小游戏适配方案(又称团结Unity快适配),本方案设计目的是降低 Unity 游戏转换到微信小游戏的开发成本。基于WebAssembly技术,无需更换Unity引擎与重写核心代码的情况下将原有游戏项目适配到微信小游戏。
WebGL(Web Graphics Library)是一种JavaScript API,它允许在任何兼容的现代Web浏览器中进行硬件加速的3D图形渲染,无需插件。WebGL使得前端开发者能够创建交互式的三维场景,将互联网体验提升到一个新的层次。...
WebGL是一种在网页浏览器中实现3D图形渲染的技术,它基于OpenGL ES 2.0标准,使得开发者无需安装任何插件就能在任何支持HTML5的浏览器上创建丰富的、交互式的3D图形。这个"webgl文档以及工具"的压缩包很可能包含了...
在IT行业中,2D渲染引擎是游戏开发领域的重要组成部分,特别是在网页游戏开发中。本文将深入探讨“超快的2D渲染引擎”及其对游戏制作的显著影响,重点关注其对WebGL和Canvas的支持。 首先,让我们理解什么是2D渲染...
Unity WebGL 是Unity游戏引擎的一个重要特性,它允许开发者将3D和2D游戏无缝地部署到Web平台上,无需用户下载安装任何插件。这极大地拓宽了游戏的分发渠道,使得游戏可以在各种浏览器上运行。在Unity WebGL项目中...
- 尽管如此,运行非常复杂的WebGL应用可能会导致系统资源紧张,甚至崩溃。 - IE浏览器不原生支持WebGL,但可以通过安装插件来实现支持。 7. WebGL开发入门: - 获取Canvas对象:开发者首先需要获取HTML中的Canvas...
WebGL的核心在于顶点着色器和片段着色器,它们是运行在GPU上的小程序,分别处理几何数据和像素颜色。 在H5游戏中,WebGL的优势主要体现在以下几个方面: 1. **硬件加速**:WebGL直接利用了用户的GPU资源,使得3D...
综上所述,"在原始WebGL2中实现不同复杂度的渲染算法"涵盖的内容广泛,从基础的几何绘制到复杂的光照和纹理效果,再到JavaScript中的图片处理和高性能的着色器编程。学习并掌握这些技术,可以让你在Web 3D图形领域...
WebGL游戏在移动设备上的表现尤其受到重视,因为移动平台的多样性和性能限制对游戏引擎提出了更高的要求。这包括对移动设备硬件加速的支持,对不同浏览器兼容性的适配,以及在有限的资源下优化游戏性能和电池使用...
Unity引擎是一款强大的跨平台游戏开发工具,它支持创建2D、3D、VR和AR等多种类型的游戏,并且可以通过WebGL技术将游戏发布到Web端,让玩家无需下载安装即可在线游玩。本篇将深入探讨如何在Unity中发布WebGL项目,并...
webgl文档开发教程
本资源"unity编辑器自定义微信小游戏版转webgl设置.rar"正是这样一个工具,它包含了一个名为"PlatformSetting.cs"的C#脚本,用于帮助用户快速地在微信小游戏和WebGL之间切换发布配置。 首先,我们要理解Unity编辑器...
WebGL 是一项在网页上渲染三维图形的技术,也是HTML5 草案的一部分。 《WebGL编程指南》的主要篇幅讲解了WebGL 原生API 和三维图形学的基础知识,包括渲染管线、着色器、矩阵变换、着色器编程语言(GLSL ES)等等,...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中实现三维图形的绘制。它使得开发者能够在网页上创建交互式的3D场景,无需任何插件。在这个主题中,我们将深入探讨如何使用WebGL来渲染一张...
与传统的Web开发相比,WebGL免去了开发专用渲染插件的繁琐过程,使得创建具有复杂3D结构的网站页面和设计3D网页游戏变得更为简单。 #### 二、WebGL的技术特性 - **JavaScript与OpenGL ES 2.0结合**:WebGL通过在...
WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中实现交互式的2D和3D图形渲染。这个“WEBGL_webgl_”很可能是一份教程或教材,旨在帮助初学者掌握WebGL技术,并随着学习者的进步不断更新...