窗体的左右两端各有一条直线,名称分别为Line1、Line2;名称为Shape1的圆靠在左边的Line1直线上(如图2所示);另有一个名称为Timer1的计时器控件,其属性值为True。要求程序运行后,圆每秒向右移动100,当圆遇到Line2时则停止移动。为实现上述功能,某人把计时器的Interval属性设置为1000,并编写了如下程序:
Private Sub Timer1_Timer()
For k=Line1.X1 To Line2.X1 Step 100
If Shape1.Left+Shape1.Width<Line2.X1 Then
Shape1.Left=Shape1.Left+100
End If
Next k
End Sub
运行程序时发现圆立即移动到右边的直线处,与题目要求的移动方式不符。为得到与题目要求相符的结果,下面的修改方案中正确的是
参考答案:B
解析: 虽然原理上使用循环来移动圆是在逐步地变更圆的位置,但是因为系统执行循环的过程很快,眼睛根本无法察觉,所以在运行程序时会有圆立即移动到右边的直线处的感觉。更何况把循环语句写在计时器的Timer事件中也是多此一举,因为计时器控件就是按一定时间间隔重复执行Timer事件过程,而且时间间隔由程序员决定,因此可以人为地适当放慢改变圆的位置的速度。利用视觉暂留原理,会看到圆在左右直线之间移动的过程,所以本题中就不再需要使用循环来移动圆。