官网教程-生命周期: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. [转]RabbitMQ,ActiveMQ,ZeroMQ,Kafka之间的比较与资料汇总

    MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...

  2. vmware克隆Centos6.4虚拟机网卡无法启动问题

    vmware克隆Centos6.4虚拟机网卡无法启动问题                 2014-02-26 16:44:54 标签:老男孩培训 vmware克隆问题 网卡无法启动          ...

  3. DataTables 表格固定栏使用方法

    有时候数据过多,为了用户体验,需要将重要的栏目固定不动,如下图所示: 从上图我们可以看出,表格滚动的时候,左边5栏是不动的.现在说一下实现方法: 插件地址: https://datatables.ne ...

  4. 轻松使用jquery解析XML

    xml文件结构:books.xml <?xml version="1.0" encoding="UTF-8"?><root>    &l ...

  5. 关于Cocos2d-x中音效重复播放问题的解决

    在做一些动作的时候,有时候只希望播放一次音效,但是触发音效的前提条件是要按着某个按钮,如果直接把播放音效的语句写在MOVED的case中,就会重复播放音效 解决方法就是把播放音效的语句写在BEGAN的 ...

  6. html dom基本操作

    //div出滚动条: <div id="discussion" style="height:500px;overflow:auto;"></d ...

  7. c++ list sort

      1.  bool operator < (S & b) {      return ID < b.ID;     } struct S { std::string firstn ...

  8. Ubuntu 12.04/13.04 安装 Oracle11gR2:该笔记已经陈旧!请参考后续的笔记

    注意点: 在 ubuntu的 /bin 下建立以下几个基本命令的链接: basename awk sh->bash | sh -> ksh 安装以下几个必须的包: binutils bui ...

  9. 使用Visual Studio将C#生成DLL文件的方法

    1.命令方式 打开Visual Studio安装目录下的开发人员命令提示 译 File.cs 以产生 File.exe csc File.cs 编译 File.cs 以产生 File.dll csc ...

  10. [转] CSocket 和CAsyncSocket类介绍

    微软的MFC把复杂的WinSock API函数封装到类里,这使得编写网络应用程序更容易. CAsyncSocket类逐个封装了WinSock API,为高级网络程序员提供了更加有力而灵活的方法.这个类 ...