vb 时间空间问题

来源:百度知道 编辑:UC知道 时间:2024/06/21 20:05:50
我要做一个程序让时间到我指定的时间时,图片按照我指定的与时间的函数运动。可是我做出来的总是不会动,函数总是把时间的变量当成定量而不是变量。我是这样写的
Dim a As Long
Dim b As Long

Private Sub Form_Load()
b = 222

a = 0

End Sub

Private Sub Timer1_Timer()

a = a + 1

If a = b Then
P1.Top = 30 + 16 * (a - b)
End If

End Sub

在线等,谢谢各位了

呵呵,你这个程序肯定是不会动的了。如果你想让你的图片动起来,请仔细看下面我给你的讲解:
1、上面你的程序是到一定时间后图片动一次(即在a=b时),注意,你的问题就处在这里,你给的条件是a=b,因此,党timer在进行一次后,a就会大于b(a>b),这个时候已经不满足条件a=b了,所以,你的图片只会动一次,不信的话可以试试。
2、关于解决这个问题
我提供两种解决思路:
第一种:改变条件。你的意思是当到达你指定的时间后,图片按照你指定的规则运动,上面你给的条件是a=b,这个等于(=)只会在一个时间点满足,所以,如果你不想麻烦的话,将条件改为a>=b,就可以了,因为后面a还是会加1,等于肯定是不行了。
第二种:定义一个标志变量(比如布尔变量,设定默认为false)。然后条件还需要改一下。当a=b时,将那个标志变量改为true,图片运动规则还是放在timer事件中,但是要和a=b那个东东分开,示例代码如下:
'需要在开始的时候定义一个布尔变量,并设为false(其实默认就是false),我们假设这个变量是flag
Private Sub Timer1_Timer()
a = a + 1
If a = b Then
flag=true
End If
if flag then
P1.Top = 30 + 16 * (a - b)
end if
End Sub
这样,你的图片就可以动起来了。

呵呵,好了,enjoy it 吧……

你的图片一动也不动,原因是a总等于1.如此,则if a=b就永远不会为真.你可能以为,随着时间推移,a的值会累加,但实际上不会.可以验证:
Private Sub Timer1_Timer()
a = a + 1
print a;
End Sub
你会发现,显示出的总是1.
改正办法:在a = a + 1前加上一句
Static a As Integer
a就会变化了.
另外注意,你两个过程中的a毫无关系,它们是彼此独立的.