官网教程-生命周期: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 )的更多相关文章

  1. Egret白鹭开发微信小游戏排行榜功能

    推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 我的个人博客 最近事情特别多,今天终于实现了排行榜功能,记录下来大家一起学习学习. 一.调用默认排行榜 首先我们需要了解: 1.白鹭开 ...

  2. Egret应用开发实践(01) Egret与WebPack

    Egret Egret引擎是一款使用TypeScript语言构建的开源免费的移动游戏引擎.Egret仅是纯粹的使用TypeScript语言来开发游戏,开发后可以使用Egret来打包为HTML5网页游戏 ...

  3. 《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》

    3.暂停游戏 暂停游戏概述: 在游戏进行时,玩家有可能会遇到多种突发事件.在跑酷游戏中突发状况的发生对游戏的影响更甚,游戏进行时玩家死亡,游戏只能从头开始,那么如果因为外界因素而影响游戏的进行,显然是 ...

  4. Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  5. Android实训案例(八)——单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局

    Android实训案例(八)--单机五子棋游戏,自定义棋盘,线条,棋子,游戏逻辑,游戏状态存储,再来一局 阿法狗让围棋突然就被热议了,鸿洋大神也顺势出了篇五子棋单机游戏的视频,我看到了就像膜拜膜拜,就 ...

  6. [UE4]暂停游戏、退出游戏、游戏输入模式

    游戏主界面WB_Main蓝图 Set Game Paused:暂停游戏 Show Mouse Cursor:显示鼠标 Set Input Mode:设置游戏输入模式(游戏和UI).仅仅游戏.仅仅UI( ...

  7. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  8. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之实现游戏逻辑(五)

    在上一篇<我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)>中提到的两个类: GameConf:负责管理游戏的 ...

  9. cocos2dx3.0 超级马里奥开发笔记(两)——正确的规划游戏逻辑

    我将不得不拿出一个完整的开发笔记.由于个人原因.代码已OK该,博客,那么就不要粘贴代码,直接解释了整个游戏设计,更确切地说,当新手应该注意的地方发展. 1.继承类和扩展作用的权----展阅读(MVC) ...

随机推荐

  1. chrome 常用快捷键(可以摆脱鼠标哦)

      Ctrl+N                                打开新窗口. Ctrl+T                                打开新标签页. Ctrl+Sh ...

  2. 【转】MFC 无边框窗口的拖动

    MFC中无边框窗口的拖动 void CXXXXDialog::OnLButtonDown(UINT nFlags, CPoint point) { PostMessage(WM_NCLBUTTONDO ...

  3. (转)sqlite3使用中的常见问题

    1. 创建数据如果不往数据库里面添加任何的表,这个数据库等于没有建立,不会在硬盘上产生任何文件,如果数据库已经存在,则会打开这个数据库. 2. 如何通过sqlite3.dll与sqlite3.def生 ...

  4. Mysql中Innodb大量插入数据时SQL语句的优化

    innodb优化后,29小时入库1300万条数据 参考:http://blog.51yip.com/mysql/1369.html 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据: A ...

  5. 【Mysql】修改最大连接数

    http://www.111cn.net/database/mysql/51934.htm

  6. SQL Server死锁的解除方法

    如果想要查出SQL Server死锁的原因,下面就教您SQL Server死锁监控的语句写法,如果您对此方面感兴趣的话,不妨一看. 下面的SQL语句运行之后,便可以查找出SQLServer死锁和阻塞的 ...

  7. meta标签整理

    meta指元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词.标签位于文档的头部,不包含任何内容. 标签的属性定义了与文档相关联的名称/值对. 一 ...

  8. C语言----项目构建Make,Automake,CMake

    http://blog.csdn.net/dc_726/article/details/48978849

  9. swift -- 计步器CMPedometer的使用

    最近公司接了个项目,是一款运动类型的APP,可以检测运动量(例如:步数,上下楼等).睡眠信息.速度等信息,因为以前粗略的了解过传感器方面的相关信息,知道主要是苹果设备内置的传感器在起作用,传感器的种类 ...

  10. Android NDK开发-2-环境搭建

    1.环境变量配置NDK 2.选中项目,右键属性菜单,创建一个新的编译器