定时回调系统_第二章.md 3.1 KB

在画布创建3个按钮,分别是添加,删除,替换

![[Pasted image 20230520163053.png]]

各个按钮绑定功能:

![[Pasted image 20230520163448.png]]

![[Pasted image 20230520163626.png]]

![[Pasted image 20230520163641.png]]

点击添加任务

![[Pasted image 20230520170834.png]]

点击,添加回调正常触发

![[Pasted image 20230520170824.png]]

方便测试删除和替换功能,把计数器改成0,变成循环任务

![[Pasted image 20230520171257.png]]

重新运行,点击添加任务,进入循环

![[Pasted image 20230520173004.png]]

点击删除任务,提示true,循环任务中止

![[Pasted image 20230520173035.png]]

重新运行,点击替换按钮,成功替换 2秒后,任务完成

![[Pasted image 20230520173127.png]]

开始弄 先整一个帧任务的类,包含唯一id,回调,目标帧(整数),延迟帧(整数),计数器

构造函数

![[Pasted image 20230520173626.png]]

整一个帧任务处理的region

![[Pasted image 20230520174151.png]]

先声明帧任务的列表,还有整型帧数

![[Pasted image 20230522112921.png]]

在帧任务的region里,先加一个添加帧任务的方法 加到帧缓存任务列表 目标帧是当前帧加上延迟帧

![[Pasted image 20230522113044.png]]

继续整一个删除任务的函数方法 还是先声明一个是否存在的布尔 然后,遍历任务列表,确认tid是否存在,如果存在,就移除对应的任务就好

![[Pasted image 20230522114619.png]]

如果在帧任务列表找不到,也有可能是在帧缓存任务列表 也是遍历一遍就好 返回是否存在

![[Pasted image 20230522115202.png]]

写一个 替换帧任务的功能接口 先创建一个新的帧任务,然后根据tid遍历帧任务列表,如果有满足条件的,替换就好

![[Pasted image 20230522120819.png]]

也有可能是在帧任务缓存列表,也是遍历帧任务缓存列表,然后替换就好 最后返回是否替换成功的布尔

![[Pasted image 20230522121004.png]]

写一个添加帧任务 按钮接口

![[Pasted image 20230522120615.png]]

继续,删除帧任务,替换帧任务 按钮接口

![[Pasted image 20230522121309.png]]

弄一个检测帧任务是否达成的函数接口,先把缓冲区的帧任务弄到帧任务列表 清空缓冲帧任务列表 帧数自增 遍历帧任务列表,达到目标帧的,就通过try catch 执行回调,如果条件没满足就continue下一个

![[Pasted image 20230522134111.png]]

然后,移除已完成的帧任务 跟时间任务的处理,逻辑相同

![[Pasted image 20230522134446.png]]

在Update调用

![[Pasted image 20230522134558.png]]

复制几个新的添加、删除、替换 按钮,对应帧任务相关 隐藏原本旧的

![[Pasted image 20230522132558.png]]

换一下添加按钮调用的api接口 其他同理

![[Pasted image 20230522132724.png]]

运行游戏,点添加任务

![[Pasted image 20230522134708.png]]

因为是循环任务,所以会一直打印

![[Pasted image 20230522134738.png]]

删除功能 相关打印信息

![[Pasted image 20230522134806.png]]

替换功能 相关打印信息

![[Pasted image 20230522134830.png]]

逻辑都正常