关于计数器(Timer)的取消或注销问题

wytj0304

比如在游戏中,单位建造往往都包括建造时长(building time),这里使用Timer计时器触发运行回调的方式.资源点数等在触发器运行前需要预先扣除.Timer延迟触发一次后,建造出单位.程序至此都是很好处理的.但是需要增加建造中取消的逻辑.也就是说在Timer计数器未触发的时候,可以对其进行终止.如果简单的调用Timer中的del并不能很好的处理业务逻辑(比如将预先扣除的资源补给系统等等).希望能够在Timer中增加一个销毁或取消的回调函数接口,因为在销毁或取消时,程序的上下文并不能简单的获取到.

4063 3 0
3个回答

wytj0304

Timer:add(
$time_interval,
$func_init,
$args_init,
$func_cancle,
$args_cancle,
$persistent=true
);
类似这样的扩展,如果系统中可以"曲线"实现需求,求告知

  • 暂无评论
walkor

可以把Timer封装一层,加上取消回调。
例如YourTimer类继承Timer,类内部增加一个数组成员,记录所有timer的取消回调,把timer_id作为key,value是回调,YourTimer::del($timer_id) 的时候运行回调

  • 暂无评论
wytj0304

大体上知道了.多谢!!

  • 暂无评论
年代过于久远,无法发表回答
🔝