AWTK计时器篇

AWTK 计时器篇

一,前序

  在许多的 GUI 或者 3D 引擎中,都会有一个概念这个概念就是计时器,而计时器就是用户开辟一个闹钟来定时定后的来通知告诉玩家时间到了,该干点什么事情了。
  其实计时器是一个很常用的功能来的,例如定时刷新帧率,某个时间点触发事件等,所以接下来我们来介绍一下 AWTK 的计时器,这里我打算通过计时器来简单做一个控件移动动画(当然做其他的效果也是可以的,这里只是为了简单介绍计时器),其实所有 GUI 的动画都是通过计时器来做的(而 AWTK 也有动画系统,主要是方便用户直接使用动画而已,本质也是通过计时器来实现的),话不多说了,我们开始看看计时器用法吧。

二,了解计时器

  其实计时器有三个主要的部分,一个就是触发事件,一个是触发时间和一个是否连续触发,而 AWTK 提供的 API 其实也是很简单的:

/* awtk/src/tkc/timer_info.h */
/**
 * @class timer_info_t
 * @parent object_t
 * @annotation ["scriptable"]
 * 单个定时器的信息。
 *
 */
struct _timer_info_t {
   
  object_t object;

  /**
   * @property {timer_func_t} on_timer
   * @annotation ["readable"]
   * 定时器回调函数。
   */
  timer_func_t on_timer;

  /**
   * @property {void*} ctx
   * @annotation ["readable", "scriptable"]
   * 定时器回调函数的上下文
   *
   */
  void* ctx;

  /**
   * @property {uint32_t} id
   * @annotation ["readable", "scriptable"]
   * 定时器的ID
   *
   * > 为TK\_INVALID\_ID时表示无效定时器。
   */
  uint32_t id;

  /**
   * @property {uint64_t} now
   * @annotation ["readable", "scriptable"]
   * 当前时间(相对时间,单位为毫秒)。
   *
   */
  uint64_t now;

  /**
   * @property {uint64_t} start
   * @annotation ["readable"]
   * 起始时间(相对时间,单位为毫秒)。
   *
   */
  uint64_t start;

  /**
   * @property {uint32_t} duration
   * @annotation ["readable"]
   * 时间间隔(单位为毫秒)。
   *
   */
  uint32_t duration;

  /**
   * @property {tk_destroy_t} on_destroy
   * @annotation ["readable"]
   * 定时器销毁时的回调函数。
   */
  tk_destroy_t on_destroy;

  /**
   * @property {void*} on_destroy_ctx
   * @annotation ["reada
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值