Egret置于后台时,暂停游戏逻辑 (Egret 5 )
官网教程-生命周期:http://developer.egret.com/cn/2d/lifecycle
主要是在游戏置于后台时,关闭游戏逻辑、渲染逻辑和背景音乐,保证更好的用户体验。
一 Egret 5.1版本新API
5版本引入了egret.Ticker、egret.lifecycle API来暂停:

二 源码位置
egret.ticker就是SystemTicker,同时lifecycle也在SystemTicker.ts 文件里。

三 暂停流程

首先在WebLifeCycleHandler里监听window的focus(获得焦点)和blur(没有焦点)事件

触发时,则调用lifecycle的resume和pause方法。执行定义的onPause和onResume,停止和恢复心跳,再派发ACTIVE和DEACTIVE事件。

四 停止和恢复心跳
egret.Ticker.pause()和egret.Ticker.resume() 用来设置paused标志位。

在startTick中调用update,如果标志位暂停状态,则返回;如果运行状态,则继续执行。

其他:
1 4.1.0版本如何实现5中的暂停?
布吉岛
2 暂停后动画效果如何运行?
分别让两个动画在EnterFrame和Tween里执行
EnterFrame:
暂停时动画会停在当前位置,恢复时动画会从当前位置继续执行。
因为EnterFrame事件是根据心跳来计算时间广播的,心跳停止了,那么广播也就停止了。
Tween:
测试一个Sprite循环在y轴上运动

暂停时停在当前位置,恢复时动画会从 (当前时间- 停止时间) 位置继续执行。
比如Tween 1秒走100像素,停止了2秒,则恢复时会从200像素位置开始继续运动。
因为Tween类里的lastTime记录的是停止时间,这个lastTime没有随着系统时间更新而更新,delta随着暂停时间而变大,而delta直接参与了setPosition(delta)。

粒子动画
未测试
MovieClip动画
未测试
总结:凡是根据心跳update来更新的动画都会从当前位置停止,从当前位置恢复。
如果不是,例如Tween,自行记录了lastTime,而这个lastTime不会根据心跳来更新,那么要视具体实现原理分析。
3 暂停后计时器如何运行?
暂停时,从当前计时位置暂停。
恢复时,从当前计时位置恢复。
例如计时1s执行一次代码,则暂停10s,这10s内不会触发计时器执行任何代码。
恢复时,则会立刻执行一次代码,因为(当前时间 - 停止时间) = 10秒 > 1秒 ,会立刻触发一次TIMER事件。
4 暂停后服务器发送的事件会有什么影响?
测试服务端定时1s向客户端发送一个递增数字。
在暂停时,仍然可接收服务器消息。

Egret置于后台时,暂停游戏逻辑 (Egret 5 )的更多相关文章
- Egret白鹭开发微信小游戏排行榜功能
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 最近事情特别多,今天终于实现了排行榜功能,记录下来大家一起学习学习. 一.调用默认排行榜 首先我们需要了解: 1.白鹭开 ...
- Egret应用开发实践(01) Egret与WebPack
Egret Egret引擎是一款使用TypeScript语言构建的开源免费的移动游戏引擎.Egret仅是纯粹的使用TypeScript语言来开发游戏,开发后可以使用Egret来打包为HTML5网页游戏 ...
- 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
3.暂停游戏 暂停游戏概述: 在游戏进行时,玩家有可能会遇到多种突发事件.在跑酷游戏中突发状况的发生对游戏的影响更甚,游戏进行时玩家死亡,游戏只能从头开始,那么如果因为外界因素而影响游戏的进行,显然是 ...
- Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
- Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局
Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...
- [UE4]暂停游戏、退出游戏、游戏输入模式
游戏主界面WB_Main蓝图 Set Game Paused:暂停游戏 Show Mouse Cursor:显示鼠标 Set Input Mode:设置游戏输入模式(游戏和UI).仅仅游戏.仅仅UI( ...
- Unity 2D游戏开发教程之使用脚本实现游戏逻辑
Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...
- 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)
在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...
- cocos2dx3.0 超级马里奥开发笔记(两)——正确的规划游戏逻辑
我将不得不拿出一个完整的开发笔记.由于个人原因.代码已OK该,博客,那么就不要粘贴代码,直接解释了整个游戏设计,更确切地说,当新手应该注意的地方发展. 1.继承类和扩展作用的权----展阅读(MVC) ...
随机推荐
- mongo 内存限制wiredTigerCacheSizeGB = 10
[root@iZ2zed126f44v90yv59ht3Z rabbitmq]# cat /usr/local/mongodb/mongodb.confport = 27017dbpath = /us ...
- 也许,这样理解HTTPS更容易(今天看到的, 对https总结最好的一篇)
摘要:本文尝试一步步还原HTTPS的设计过程,以理解为什么HTTPS最终会是这副模样.但是这并不代表HTTPS的真实设计过程.在阅读本文时,你可以尝试放下已有的对HTTPS的理解,这样更利于" ...
- msyql 笔记
mysql复习 一:复习前的准备 1:确认你已安装wamp 2:确认你已安装ecshop,并且ecshop的数据库名为shop 二 基础知识: 1.数据库的连接 mysql -u -p -h -u 用 ...
- [Spring] Java spring quartz 定时任务
首先,需要导入quartz 的jar包 ① applicationContext.xml <!-- 轮询任务 --> <import resource="classpath ...
- e686. 显示打印窗口
The print dialog allows the user to change the default printer settings such as the default printer, ...
- 双卡手机怎么指定SIM卡打电话
双卡手机如何指定SIM卡打电话 package com.example.dualsimtest; import android.app.Activity; import android.content ...
- 【Java面试题】24 sleep() 和 wait() 有什么区别? 详细解析!!!!
第一种解释: 功能差不多,都用来进行线程控制,他们最大本质的区别是:sleep()不释放同步锁,wait()释放同步缩. 还有用法的上的不同是:sleep(milliseconds)可 ...
- Tomcat 配置 项目 到tomcat目录外面 和 域名绑定访问(api接口、前端网站、后台管理网站)
先停止tomcat服务 1.进入apache-tomcat-7.0.68/conf/Catalina/localhost(如果之前还都没有启动过tomcat,是不会有此目录的,先启动一次再关闭,会自动 ...
- why pure virtual function has definition 为什么可以在基类中实现纯虚函数
看了会音频,无意搜到一个frameworks/base/include/utils/Flattenable.h : virtual ~Flattenable() = 0; 所以查了下“纯虚函数定义实现 ...
- socket小实例
服务端 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst ...