LCUI
简体中文
简体中文
  • 开始
  • 基础
    • 安装
    • 介绍
    • 约定
    • XML
    • CSS
    • 架构
  • 实例
    • 主循环
    • 工作线程
    • 定时器
    • 事件
  • 组件
    • 属性
    • 样式
    • 原型
    • 事件
    • 生命周期
    • 绘制流程
  • 性能
  • CSS
    • CSS 数据库
    • CSS 解析器
  • 布局
    • 正常流布局
    • 弹性盒子布局
  • 图形
    • 绘制简单的图形
    • 绘制复杂的图形
    • 像素操作
    • 图像文件操作
  • 字体
    • 字体数据库
    • 字体渲染引擎
    • 文本排版与渲染
  • 驱动
    • 事件循环
    • 视频
    • 鼠标
    • 键盘
    • 触控
  • 输入法
由 GitBook 提供支持
在本页
  1. 实例

定时器

定时器的概念及用法介绍。

定时器用于将一些操作推迟到指定时间之后执行。LCUI 的定时器都是在主线程中处理的,这意味着定时器的时间粒度受到帧率的限制,不能小于每帧的停留时间。举个例子:当前帧率为 120 帧每秒,那么时间粒度就是 8.33 毫秒,如果你设置定时器的等待时间是 20 毫秒,那么实际的等待时间就会大于等于 25 毫秒,也就是在设置定时器后的第三帧时处理这个定时器。这种精确度的定时器能够应付大多数场景,如果你需要更加精确的定时器,我们建议你选择其它定时器库,或自行编码实现。

简单的例子

这个例子展示了如何设置和释放定时器:

#include <stdio.h>
#include <LCUI.h>

void OnTimeout(void *arg)
{
    int *timer_id = arg;

    LCUITimer_Free(*timer_id);
    LCUI_Quit();
    printf("timeout\n");
}

void OnInterval(void *arg)
{
    printf("interval\n");
}

int main(void)
{
    int timer_id;

    LCUI_Init();
    timer_id = LCUI_SetInterval(1000, OnInterval, 0);
    LCUI_SetTimeout(5000, OnTimeout, &timer_id);
    return LCUI_Main();
}

首先调用 LCUI_SetInterval() 设置定时器每隔 1 秒调用一次 OnInterval() 函数,并将它返回的定时器标识号赋值给 timer_id ,然后调用 LCUI_SetTimeout() 设置一个定时器在 5 秒后调用 OnTimeout() 函数,并将 timer_id 的引用作为参数传给 OnTimeout() 函数。

上一页工作线程下一页事件

最后更新于3年前