调度器(scheduler)
2016-04-12 15:24
134 查看
调度器(schedule)为游戏提供定时事件和定时调用服务。
调度器(schedule)的功能和事件监听器(eventlistener)的功能有点类似:都是在特定情况下调用某个事先准备好的回调函数。
不同之处在于:事件监听器需要通过手动触发(Trigger)来调用这个准备好的回调函数,而调度器是需要等到游戏运行了一个时间段(delta_time)后来调用这个回调函数
一般会把调度器封装成一个类:
一、需要一个注册回调函数的接口,这个接口的参数可能包括1:time,指需要运行多久后调用注册好的回调函数2,需要调用的回调函数的相关信息
二、需要定义一个结构体来保存,注册的回调函数的整体信息。可能包括:回调的时机(time),函数本身,需要传递的参数等
三、把上面的结构体保存在一个容器中,然后在一个update中遍历这个容器,一旦时机到了,立刻调用。
大概就是这样了,具体代码我就不贴了。
补充:
第三步,其实如果把容器里的元素按回调的时间来排序的话,其实并不需要遍历整个容器,每次只要访问容器的首或者尾元素,比较一下是否到可调用的时间点。到了之后再把首或者尾元素删除。这样就能确保容器的首或者尾元素每次都是最先要调用的回调函数。而不必遍历整个容器。
调度器(schedule)的功能和事件监听器(eventlistener)的功能有点类似:都是在特定情况下调用某个事先准备好的回调函数。
不同之处在于:事件监听器需要通过手动触发(Trigger)来调用这个准备好的回调函数,而调度器是需要等到游戏运行了一个时间段(delta_time)后来调用这个回调函数
一般会把调度器封装成一个类:
一、需要一个注册回调函数的接口,这个接口的参数可能包括1:time,指需要运行多久后调用注册好的回调函数2,需要调用的回调函数的相关信息
二、需要定义一个结构体来保存,注册的回调函数的整体信息。可能包括:回调的时机(time),函数本身,需要传递的参数等
三、把上面的结构体保存在一个容器中,然后在一个update中遍历这个容器,一旦时机到了,立刻调用。
大概就是这样了,具体代码我就不贴了。
补充:
第三步,其实如果把容器里的元素按回调的时间来排序的话,其实并不需要遍历整个容器,每次只要访问容器的首或者尾元素,比较一下是否到可调用的时间点。到了之后再把首或者尾元素删除。这样就能确保容器的首或者尾元素每次都是最先要调用的回调函数。而不必遍历整个容器。
相关文章推荐
- Java HashMap的死循环
- 安装mongodb数据库
- fir.im Weekly - 论个人技术影响力是如何炼成的
- Android屏幕适配全攻略(最权威的官方适配指导)
- dialog全屏那些事
- IDEA 高效使用
- java简单年月日,星期设置
- 每天一个linux命令(61):wget命令
- mysql timediff函数极限值
- C语言列出文件目录中的所有文件
- 容器Vector模拟
- Pentaho Work with Big Data(三)—— 向Hadoop集群导入数据
- 折半查找
- ceph 性能调整和基准
- hadoop的伪分布式模式配置与安装
- STM32F4启动代码分析
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- python高速排序
- React-Router JS控制路由跳转
- eclipse 里,打开的文件的各个标签,标题乱码。