定时器相关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,则不会再唤醒.

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;//定时器IDSDL_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);//关闭SDLSDL_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;//定时器IDSDL_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);//关闭SDLSDL_Quit();return 0;
err0:return -1;
}

程序运行结果如下:

【SDL】SDL学习笔记二 定时器相关推荐

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  2. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  3. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  4. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  5. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

  6. Ethernet/IP 学习笔记二

    Ethernet/IP 学习笔记二 原文链接:http://wiki.mbalib.com/wiki/Ethernet/IP 1.通信模式 不同于源/目的通信模式,EtherNet/IP 采用生产/消 ...

  7. Java学习笔记二:数据类型

    Java学习笔记二:数据类型 1. 整型:没有小数部分,允许为负数,Java整型分4种:int short long byte 1.1 Int最为常用,一个Int类型变量在内存中占用4个字节,取值范围 ...

  8. 吴恩达《机器学习》学习笔记二——单变量线性回归

    吴恩达<机器学习>学习笔记二--单变量线性回归 一. 模型描述 二. 代价函数 1.代价函数和目标函数的引出 2.代价函数的理解(单变量) 3.代价函数的理解(两个参数) 三. 梯度下降- ...

  9. ASP.NET MVC 2 学习笔记二: 表单的灵活提交

    ASP.NET MVC 2 学习笔记二:  表单的灵活提交 前面说到有做到公司内部的一个请假系统,用的是ASP.NET MVC 2+Entity Framework.虽然EF(Entity Frame ...

最新文章

  1. oracle virtualbox 添加共享硬盘
  2. python3 判断数据类型
  3. SQL表内查重和删重
  4. day15-ajax和jquery
  5. 苹果MAC系统的安装
  6. 不断电系统的容量如何计算?
  7. Request的学习笔记(属Servlet学习课程)
  8. 初见 IsolatedStorage
  9. BZOJ 3729: Gty的游戏 [伪ETT 博弈论]【学习笔记】
  10. c语言 抽奖算法,腾讯2018校招笔试!抽奖算法思路c++实现!进入鹅厂真的简单!...
  11. [Silverlight 4 RC]WebBrowserBrush概览
  12. 微信语音遥控Windows Azure云虚拟机
  13. 千峰前端html个人笔记
  14. 在线开票服务器设置,开票服务器系统介绍
  15. 机器学习系列2---经验风险最小化原则和结构风险最小化原则与VC维问题
  16. 《汉魏风云》2、孙吴兵法第一传人——辛苦的天才曹操
  17. jQuery-获取验证码
  18. ST7703 LCM显示屏调试--基于MT6765
  19. 荷马史诗【k叉哈夫曼树】
  20. 系统安全启动总结思考

热门文章

  1. DataKeyNames
  2. css什么是自适应布局,CSS自适应布局
  3. java 删除二进制内容_二进制搜索树节点删除
  4. 如何在服务器上运行python程序_在服务器上配置运行(每天一则段子python程序)...
  5. oracle 02380,oracle 11.2.0.3 fornb…
  6. Java黑皮书课后题第5章:**5.37(十进制转二进制)编写程序,提示用户输入一个十进制整数,然后显示对应的二进制值(不要使用Integer.toBinaryString(int)方法)
  7. mysql 远程连接
  8. linux安装报错之:ifconfig command not found解决
  9. js去掉字符串中的所有空格
  10. squirrelsql安装