<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<title>无标题文档</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<style type="text/css">
*{margin:0pxpadding:0px}
.main{border:1px double #cccwidth:300pxheight:100px}
.deng{width:90pxheight:90pxfloat:leftborder:3px solid blackbackground-color:#CCCCCCborder-radius:45pxmargin-left:2px}
.jiShi{margin:5px 10pxcolor:#FF00FF}
</style>
</head>
<body>
<div class="main">
<div class="deng c0"></div>
<div class="deng c1"></div>
<div class="deng c2"></div>
<div class="jiShi">
00:00:30
</div>
<H3>每隔30秒变换一次</H3>
</div>
<script type="text/javascript">
window.onload=function(){
let timer,timer2
let n = 0
let t = 29
let colors = ["red","green","yellow"]
timer = window.setInterval(function(){
if(t==0){
$(".deng").css({"backgroundColor":"#CCC"})
$(".c" + n).css({"backgroundColor":colors[n]})
n++
if(n==3){n=0}
t=30
}else{
$(".jiShi").text("00:00:" + t)
t--
}
},1000)
}
</script>
</body>
</html>
一、控件1、示范图,直接画个图,然后加载到 Picture1 中。
2、灯。圆形,用 Shape 控件,组不组控件数组随意。
3、倒计时。用 Label 控件。
4、按钮。我这里用的是二个 Check 控件。内容:自动,手动。
另 手动中所示二个按钮,使用的是 Option 。
关闭按钮,使用的才是:Command
5、另放一个计时器(timer),Interval :1000 , Enabled :False
二、方法
1、常量:
Const TXDR = 55 '通行东西红灯时间
Const TXLR = 60 '通行南北红灯时间
Const TXH = 5 '通行黄灯时间
2、变量,一个计时用的变量,一个表示状态的变量。
状态的变量可用或不用,用的话,可以节省CPU处理时间。
3、响应事件。
自动,手动,需要响应事件。我的代码主要写在计时器里,所以 这个响应事件很简单。
程序代码:
Private Sub Check1_Click() '点击自动
If Check1.Value = 1 Then'如果自动开
Check2.Value = 0'手动关
DoEvents'等待手动关响应执行完
TXjs = 0
Timer1.Enabled = True '开定时器
Else'否则
Timer1.Enabled = False '关定时器
End If
End Sub
Private Sub Check2_Click() '点击手动
If Check2.Value = 1 Then'如果手动关
Check1.Value = 0'自动关
DoEvents'等待自动关响应执行完
TXjs = 0
Timer1.Enabled = True '开定时器
Else'否则
Timer1.Enabled = False '关定时器
End If
End Sub
4、定时器里。
首先,计时,每1秒,自加1
当 计时的结果超过一个周期,置 0
对 计时结果进行 多分支选择。
Select Case TXjs
Case Is <TXDR '东西红
Case Is <TXDR + TXH '东西黄
Case Is <TXDR + TXH + TXLR '南北红
Case Is <TXDR + TXH + TXLR + TXH '南北红
Case Else
TXjs = 0
End Select
每个分支中,单独对四个灯和四个倒计时分别指定。
手动部分,没什么,判断一下,然后直接指定,不解释了。
程序代码:
If Check2.Value = 1 Then
If Option1.Value = True Then
Shape1(0).FillColor = vbRed
Shape1(1).FillColor = vbRed
Shape1(2).FillColor = vbGreen
Shape1(3).FillColor = vbGreen
'Label1(0).ForeColor = vbRed
'Label1(1).ForeColor = vbRed
'Label1(2).ForeColor = vbGreen
'Label1(3).ForeColor = vbGreen
Label4.Caption = "南北:绿"
Label5.Caption = "东西:红"
DoEvents
Else
Shape1(0).FillColor = vbGreen
Shape1(1).FillColor = vbGreen
Shape1(2).FillColor = vbRed
Shape1(3).FillColor = vbRed
'Label1(0).ForeColor = vbGreen
'Label1(1).ForeColor = vbGreen
'Label1(2).ForeColor = vbRed
'Label1(3).ForeColor = vbRed
Label4.Caption = "南北:红"
Label5.Caption = "东西:绿"
DoEvents
End If
Label1(0).Caption = "∞"
Label1(1).Caption = "∞"
Label1(2).Caption = "∞"
Label1(3).Caption = "∞"
End If
性质是一样的 你看看吧