游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5229|回复: 0

VB Delay函数详解

[复制链接]

4

主题

27

帖子

27

积分

注册会员

Rank: 2

积分
27
QQ
发表于 2007-5-14 21:33:00 | 显示全部楼层 |阅读模式
Sub delay(ByVal n As Single)   '函数 delay 用于延时(延时秒数 n 类型 Single)
Dim tm1 As Single, tm2 As Single  '定义记录时间变量 tm1  tm2  类型 Single
tm1 = Timer  '记录系统现在时间到 tm1  此时间为开始延时时间
Do  '循环点 先执行到Loop 返回这里继续
tm2 = Timer  '赋值现在时间到 tm2  此时间为系统当前时间,在延时开始时间之后
If tm2 < tm1 Then tm2 = tm2 + 86400  '这里判断特殊情况 在下面说明#1
If tm2 - tm1 > n Then Exit Do  '判断tm2-tm1大于延时秒数(n)就跳处循环下面说明#2
DoEvents     '转让控制权,以便让操作系统处理其它的事件

Loop  '返回循环点 继续循环
End Sub

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Timer函数返回的是从午夜开始到现在经过的秒数 用24小时描述就是0点开始
[24小时就是86400秒]
#1特殊判断过程
    看了上面的Timer函数的返回值就好解释了,如果是从23点59分58秒开始延时
tm1记录86398秒(由Timer函数返回)  假如延时5秒,则2秒后,tm2记录0秒(由
Timer函数返回)因为2秒后系统是24点就是0点Timer函数返回0秒 则tm2小于tm1
必须给tm2重新赋值才能正确延时,tim2=tim2+86400(也就是再加上24小时)此时
延时正确
#2循环跳出
    每次循环都会把Timer函数(返回现在的时间)的返回值赋给tm2直到tm2-tm1
大于延时秒数(n)则跳出循环拿会控制权,结束延时!~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 11:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表