【SDL】SDL学习笔记二 定时器
来源:互联网 发布:淘宝卖家购买淘金币 编辑:程序博客网 时间:2024/06/06 00:35
定时器相关API(SDL_timer.h):
1.Uint32 SDL_GetTicks():获取从SDL库初始化(定时器模块初始化)开始到当前的运行时间(ms);
2.Uint64 SDL_GetPerformanceCounter():获取高精度定时器的当前值;
3.Uint64 SDL_GetPerformanceFrequency():获取高进度定时器频率(每秒钟高精度定时器的次数);
4.void SDL_Delay(Uint32 ms):延迟函数;
5.SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_TimerCallback callback, void *param):
向系统请求增加一个定时器.
SDL_TimerID: 定时器的ID,若该值为NULL,表示请求失败;
interval: 定时间隔;
callback: 回调函数,定时时间到后会调用此函数;
备注: typedef Uint32 (* SDL_TimerCallback)(Uint32 interval, void *param):
该函数返回值为下次唤醒的时长,若返回0,则不会再唤醒.
运行结果如下:
程序运行结果如下:
1.Uint32 SDL_GetTicks():获取从SDL库初始化(定时器模块初始化)开始到当前的运行时间(ms);
2.Uint64 SDL_GetPerformanceCounter():获取高精度定时器的当前值;
3.Uint64 SDL_GetPerformanceFrequency():获取高进度定时器频率(每秒钟高精度定时器的次数);
4.void SDL_Delay(Uint32 ms):延迟函数;
5.SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_TimerCallback callback, void *param):
向系统请求增加一个定时器.
SDL_TimerID: 定时器的ID,若该值为NULL,表示请求失败;
interval: 定时间隔;
callback: 回调函数,定时时间到后会调用此函数;
备注: typedef Uint32 (* SDL_TimerCallback)(Uint32 interval, void *param):
该函数返回值为下次唤醒的时长,若返回0,则不会再唤醒.
6. SDL_bool SDL_RemoveTimer(SDL_TimerID id): 删除给定id的定时器,返回值表示是否删除成功.
7.int SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback);此函数也是启动定时器和删除定时器的版本,但是已经被上面两个API替代。
参考程序示例一:
#include <stdio.h>#include <SDL/SDL.h>int i = 0;//回调函数Uint32 my_fun(Uint32 interval, void *param){ printf("interval: %d *param: %d\n", interval, *(int*)param); i++; return interval;}int main(void){ int ret; Uint32 time; //定时器ID SDL_TimerID timeId = NULL; //SDL初始化 ret = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER); if (-1 == ret) { printf("SDL_Init failed..\n"); goto err0; } //延时函数 单位是毫秒 //SDL_Delay(1000); //返回从SDL初始化开始到现在的时间 单位是毫秒 time = SDL_GetTicks(); printf("%u\n", time); //添加定时器 timeId = SDL_AddTimer(100, my_fun, &time); if (NULL == timeId) { printf("AddTime failed...\n"); goto err0; } while(1) { if (10 == i) break; } //删除定时器 SDL_RemoveTimer(timeId); //关闭SDL SDL_Quit(); return 0;err0: return -1;}
运行结果如下:
原来版本定时器示例二:
#include <stdio.h>#include <SDL/SDL.h>int i = 0;//定时器的第二种方法 此API已经被SDL_AddTimer SDL_RemoveTimer取代Uint32 fun(Uint32 interval){ printf("interval: %d\n", interval); i++; return interval;}int main(void){ int ret; Uint32 time; //定时器ID SDL_TimerID timeId = NULL; //SDL初始化 ret = SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER); if (-1 == ret) { printf("SDL_Init failed..\n"); goto err0; } //延时函数 单位是毫秒 //SDL_Delay(1000); //返回从SDL初始化开始到现在的时间 单位是毫秒 time = SDL_GetTicks(); printf("%u\n", time); SDL_SetTimer(100, fun); while(1) { if (10 == i) break; } //删除定时器 SDL_SetTimer(0, NULL); //关闭SDL SDL_Quit(); return 0;err0: return -1;}
程序运行结果如下:
2 0
- 【SDL】SDL学习笔记二 定时器
- SDL学习笔记之二
- SDL学习笔记之二
- SDL学习(二)
- SDL学习笔记之一
- SDL学习笔记
- SDL学习笔记
- SDL学习笔记一
- SDL学习笔记之一
- sdl学习笔记
- SDL学习笔记二(图片的加载和显示)
- SDL库的学习笔记之二—初始化、退出
- An ffmpeg and SDL Tutorial 学习笔记(二)
- ffmpeg和SDL学习笔记
- sdl环境安装学习笔记
- IOS 项目加入SDL库 --- FFMPEG+SDL学习 之 二
- SDL学习(二) 设置SDL扩展库
- SDL学习
- IT-memcache-清除缓存
- strcpy的分析
- 【动态规划】Codeforces 711C Coloring Trees
- 友盟第三方登录和分享
- android部分默认设置的修改
- 【SDL】SDL学习笔记二 定时器
- mysql取出每个分组中最新的记录
- wr703n刷openwrt智能控制--配置wifi
- 40个Java多线程问题总结
- pdf转换成word格式的完美方法
- ADB调试命令大全
- 一次完整的HTTP事务
- 【数据结构】快排
- Elasticsearch java api 基本搜索部分