Egret社区
  egret.lifecycle.onPause = () => {
        gamePause()
            egret.ticker.pause();
}

  gamePause() {
        for (let i = 0; i < this.wpPool.length; i++) {
            egret.Tween.pauseTweens(this.wpPool[i]);
            console.log("已经执行游戏暂停功能");
        }
}

具体代码就不贴了,太多,大概流程就是:

在Main函数的 egret.lifecycle.onPause中,执行了另个一主要显示的容器中,一个tween动画的暂停设置
根据log输出,函数的确执行了,但是实际效果中,tween并没有停下来,不知道是什么问题,特地来问。

分享到 :
0 人收藏

8 个回复

倒序浏览
zanglitao  登堂入室 | 2020-4-29 11:12:26
简单说,就是微信小游戏中,切换到后台时,tween无法执行暂停。
网上查说是要做个lasttime时间记录,然后重新执行什么的,有没有更优化的解决方式呢?
zanglitao  登堂入室 | 2020-4-29 11:18:30
简单说,就是切换到后台时,自行tween的暂停功能失效,
上网查的原因主要是:
因为Tween类里的lastTime记录的是停止时间,这个lastTime没有随着系统时间更新而更新,delta随着暂停时间而变大,而delta直接参与了setPosition(delta)。
各位有什么好的解决方法呢
zanglitao  登堂入室 | 2020-4-29 11:19:39
简单说,就是切换到后台时,自行tween的暂停功能失效,
上网查的原因主要是:
因为Tween类里的lastTime记录的是停止时间,这个lastTime没有随着系统时间更新而更新,delta随着暂停时间而变大,而delta直接参与了setPosition(delta)。
各位有什么好的解决方法呢
app小王子  社区管理员 | 2020-4-29 11:34:59
麻烦上传demo  
zanglitao  登堂入室 | 2020-4-29 12:58:09
举例说:
前台显示一个egret.DisplayObjectContainer,里面有个shape吧,
然后执行tween,让shape从最上端,移动到最下,移动过程中,小游戏切换到后台运行,
在  egret.lifecycle.onPause = () => {
             此处执行将tween暂停的代码
            egret.ticker.pause();
}
本来想切换后台后,tween也暂停执行,但切回来一看,tween并没有暂停。
app小王子  社区管理员 | 2020-4-29 14:17:39
zanglitao 发表于 2020-4-29 12:58
举例说:
前台显示一个egret.DisplayObjectContainer,里面有个shape吧,
然后执行tween,让shape从最上端 ...

那你说吧 说吧 说吧  我听不见 听不见  我只看demo
zanglitao  登堂入室 | 2020-4-29 15:56:54
写了个简单的demo,微信小游戏方式发布。
在图片下移过程中,切换到后台
应该先暂停tween,然后切回时再恢复
但实际执行过程中,并没有,图片会一直下移,并没有暂停下来。 demo.zip (1.02 MB, 下载次数: 0)
zanglitao  登堂入室 | 2020-5-6 11:22:28
有大神指点一下么
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

zanglitao

登堂入室

积分: 10 帖子: 12 精华: 0

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部