调度器(scheduler)

调度器(schedule)为游戏提供定时事件和定时调用服务。

调度器(schedule)的功能和事件监听器(eventlistener)的功能有点类似:都是在特定情况下调用某个事先准备好的回调函数。

不同之处在于:事件监听器需要通过手动触发(Trigger)来调用这个准备好的回调函数,而调度器是需要等到游戏运行了一个时间段(delta_time)后来调用这个回调函数

一般会把调度器封装成一个类:

一、需要一个注册回调函数的接口,这个接口的参数可能包括1:time,指需要运行多久后调用注册好的回调函数2,需要调用的回调函数的相关信息

二、需要定义一个结构体来保存,注册的回调函数的整体信息。可能包括:回调的时机(time),函数本身,需要传递的参数等

三、把上面的结构体保存在一个容器中,然后在一个update中遍历这个容器,一旦时机到了,立刻调用。

大概就是这样了,具体代码我就不贴了。

 补充:

第三步,其实如果把容器里的元素按回调的时间来排序的话,其实并不需要遍历整个容器,每次只要访问容器的首或者尾元素,比较一下是否到可调用的时间点。到了之后再把首或者尾元素删除。这样就能确保容器的首或者尾元素每次都是最先要调用的回调函数。而不必遍历整个容器。

时间: 2024-11-05 11:38:01

调度器(scheduler)的相关文章

(5)调度器(scheduler)

继承关系 原理介绍 Cocos2d-x调度器为游戏提供定时事件和定时调用服务.所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处: 每当Node不再可见或已从场景中移除时,调度器会停止. Cocos2d-x暂停时,调度器也会停止.当Cocos2d-x重新开始时,调度器也会自动继续启动. Cocos2d-x封装了一个供各种不同平台使用的调度器,使用此调度器你不用关心和跟踪你所设定的定时对象的销毁和停止,以及崩溃的风险. 基础用法 游戏中我们经常会随时间的变化而做一些逻辑判断,如碰撞

Cocos2d-X3.0 刨根问底(六)----- 调度器Scheduler类源码分析

上一章,我们分析Node类的源码,在Node类里面耦合了一个 Scheduler 类的对象,这章我们就来剖析Cocos2d-x的调度器 Scheduler 类的源码,从源码中去了解它的实现与应用方法. 直入正题,我们打开CCScheduler.h文件看下里面都藏了些什么. 打开了CCScheduler.h 文件,还好,这个文件没有ccnode.h那么大有上午行,不然真的吐血了, 仅仅不到500行代码.这个文件里面一共有五个类的定义,老规矩,从加载的头文件开始阅读. #include <funct

cocos2dx调度器(scheduler)

调度器(scheduler) http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v3/scheduler/zh.md

7.k8s.调度器scheduler 亲和性、污点

#k8s. 调度器scheduler 亲和性.污点 默认调度过程:预选 Predicates (过滤节点) --> 优选 Priorities(优先级排序) --> 优先级最高节点 实际使用,根据需求控制Pod调度,需要用到如下: 指定节点.nodeAffinity(节点亲和性).podAffinity(pod 亲和性). podAntiAffinity(pod 反亲和性) #指定调度节点 # Pod.spec.nodeName 强制匹配,直接指定Node 节点,跳过 Scheduler 调度

Yarn 调度器Scheduler详解

理想情况下,我们应用对Yarn资源的请求应该立刻得到满足,但现实情况资源往往是有限的,特别是在一个很繁忙的集群,一个应用资源的请求经常需要等待一段时间才能的到相应的资源.在Yarn中,负责给应用分配资源的就是Scheduler.其实调度本身就是一个难题,很难找到一个完美的策略可以解决所有的应用场景.为此,Yarn提供了多种调度器和可配置的策略供我们选择. 一.调度器的选择 在Yarn中有三种调度器可以选择:FIFO Scheduler ,Capacity Scheduler,FairS ched

Yarn 组件的指挥部 – 调度器Scheduler

linux基础 为hadoop集群的搭建扫清了障碍,也为内存的管理,文件系统的管理扫清了障碍 接着到Hadoop的阶段,首先做集群的安装,深入到使用这两个核心的组件,分布式文件系统HDFS,解决大量数据怎么存储的问题,第二个就是分布式计算MapReduce.MapReduce的包含Yarn和MapReduce,随着集群规模的扩大,资源的管理必要用一个单独的组件Yarn来管理,程序员只要关注如何来写程序就好了. 然后讲了Zookeeper: 轻量级组件,往大数据集群里导数据的,比如Sqoop和Fl

cocos2dx调度器scheduler

/ 让帧循环调用this->update(float dt)函数 // scheduleUpdate(); // 让帧循环去调用制定的函数,时间还是1/60秒 // schedule(schedule_selector(T19Update::MyScheduleFunc)); // 定时器,每隔2秒调用T19Update::MyScheduleFunc函数 // schedule(schedule_selector(T19Update::MyScheduleFunc), 2.0f); // 有限

Spring之调度器(Scheduler)

调度器的使用基本步骤准备工作: 1.获得一个调度器工厂:SchedulerFactory 2.获得一个调度器:通过SchedulerFactory.getSchduler()获得 3.往调度器里面添加一些想要写入的信息:scheduler.getContext().put("ypDao", scan_trans_task_quartz_period); 创建任务: 1.创建JobDetail实例,绑定Job实现类(例如QuartJob.class实现了Job的类): JobDetail

cocos2d调度器(定时执行某函数)

调度器(scheduler) 继承关系 原理介绍 Cocos2d-x调度器为游戏提供定时事件和定时调用服务.所有Node对象都知道如何调度和取消调度事件,使用调度器有几个好处: 每当Node不再可见或已从场景中移除时,调度器会停止. Cocos2d-x暂停时,调度器也会停止.当Cocos2d-x重新开始时,调度器也会自动继续启动. Cocos2d-x封装了一个供各种不同平台使用的调度器,使用此调度器你不用关心和跟踪你所设定的定时对象的销毁和停止,以及崩溃的风险. 基础用法 游戏中我们经常会随时间