问题描述:
问题解答:
题目没完整,不过我现写了一个不停反弹的,而且反弹的高度越来越小,直到停止,你可以参考一下哈
Rem 注意,在窗体中加一个Shape1,改名为Ball,再加一个Timer1
Dim downfoot As Integer, upfoot As Integer
Private Sub Form_Load()
Ball.Shape = 3 '设置小球是圆形的
Ball.BackStyle = 1 '设置小球不透明
Ball.BackColor = vbRed '设置小球是红色的
Ball.BorderColor = vbRed
Ball.Height = Ball.Width
Ball.Left = (Me.ScaleWidth - Ball.Width) / 2 '设置小球在水平居中
Ball.Top = 0
downfoot = (Me.ScaleHeight - Ball.Height) / 100 '设置每次下落距离
upfoot = 5 * downfoot '设置每次反弹后衰减的距离
Timer1.Enabled = True
Timer1.Interval = 10 '设置时钟间隔
End Sub
Private Sub Timer1_Timer()
Static m As Integer, n As Integer
n = n + 1
Ball.Top = Ball.Top + downfoot
If Ball.Top > Me.ScaleHeight - Ball.Height Then m = m + 1: Ball.Top = m * upfoot: n = 0
If m * upfoot > Me.ScaleHeight - Ball.Height Then Timer1.Enabled = False: Ball.Top = Me.ScaleHeight - Ball.Height
End Sub
用form1.scale定义窗体坐标系先 Pset 函数 画圆球 然后根据坐标不断的画圆球的位置喽- -提示到此结束 呵呵
PS:修改 看了楼上的答案 没有上升阶段的 所以偶也帮楼主写了个 +一个时间计时器楼主可以试试额
Dim down, m, downfoot As Integer
Dim a As Boolean
Dim b As Integer
Private Sub timer1_timer()
Cls '清空窗体上的图形
If a = False Then '当a为假的时候 执行下降段
Timer1.Interval = 10 '下降时候的速度快 所以让时间计时器的间隔变短
PSet (0, m), vbRed '画红色的圆球
m = m + down '圆球下个位置的坐标
If m < 15 Then '当圆球到达底部的时候
a = True '让a变为真值 即开始执行上升阶段
End If
Else '上升阶段
Timer1.Interval = 20 '上升的时候速度慢 所以让时间计时器间隔变长
PSet (0, m), vbRed '画红色圆球
m = m - down '圆球下个位置的坐标
If m > 185 + b * downfoot Then
a = False
b = b + 1
If b * downfoot < -185 Then Timer1.Enabled = False
End If
End If
End Sub
Private Sub Form_Load()
Form1.Scale (-100, 200)-(100, 0) '定义窗体坐标系
Form1.DrawWidth = 50 '定义圆球大小
down = Form1.ScaleHeight \ 100
downfoot = down * 10 '定义衰减量
m = 185
b = 1
Timer1.Interval = 10
End Sub