egret.lifecycle(生命周期)的一些理解

egret新建一个游戏,主类的构造函数里面侦听了ADDED_TO_STAGE事件,然后就有了如下函数

 


private onAddToStage(event: egret.Event) {

    egret.lifecycle.addLifecycleListener((context) => {
        //addLifecycleListener接受一个参数,这个参数的类型为“只有一个参数(这里名叫context)的函数”即所谓的LifecyclePlugin,而这个函数的具体内容是由我们自己定义的,像下面这样:
        context.onUpdate = () => {
			//这个可以在EgretWeb中的startTicker函数中找到,是一秒执行六十次。
        }
		//context这个形参代表LifecycleContext类的一个实例,这个类有两个必有的方法pause()跟resume(),另外还有一个可选的方法onUpdate(),上面就是对这个可选的方法进行定义。
		
    })
	//注意上面仅仅是向addLifecycleListener传递了一个由我们自定义细节的参数(其类型是个函数)而已。
	//那么,在onAddToStage的一开始,addLifecycleListener会生成一个LifecycleContext类的实例context,然后把它push进一个contexts数组,并将这个context交给上面这个我们自定义细节的参数函数去调用。
	
	//context在游戏需要暂停时(例如切入后台了,比如在egretWing上F5调试时,点击切换到别的窗口,让游戏后台进行)会执行pause方法。pause方法自动判断目前游戏是否活动,活动则暂停,并由stage发送程序暂停的事件。如果像下面这样还自定义了onPause方法,则接着执行这个方法。resume同此理。
	
    egret.lifecycle.onPause = () => {
        egret.ticker.pause();
    }

    egret.lifecycle.onResume = () => {
        egret.ticker.resume();
    }

    this.runGame().catch(e => {
        console.log(e);
    })

}

 总的来说,关于这个生命周期,比较有用的地方就是onUpdate、onPause、onResume这几个能自定义的地方,比如写个暂停菜单什么的,其他的都可以不用管

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值