想动态模拟显示一小球与静止小球发生弹性碰撞的过程,
但是却不知怎么显示小球的运动及其碰撞,望英雄给予指点,
小弟将感激不尽!
但是却不知怎么显示小球的运动及其碰撞,望英雄给予指点,
小弟将感激不尽!
解决方案 »
- ASP关于ADODB.Recordset (0x800A0BB9)参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。的问题??
- Inet控件的一个问题(十万火急)
- 请各位介绍几本比较好的 经典的vb数据库管理系统设计方面的书!!
- image控件如何使用带透明的GIF图片?
- textbox的属性怎么找不到caption属性呢?
- 怎么在 access表中插入记录
- 这个 CopyMemory 错在哪里呢
- 如何清除IE的自动完成内容
- 请问各位如何对时间输入进行限制?如输入的格式,输入小时时不大于24......
- Winsock大虾请看↓
- 我应该用tcp/ip还是udp?
- 对于listview,如何得到鼠标双击所在单元格的内容
利时间控件,控制球的不同位置,
结合坐标关系,实现所要模似效果。
Dim i As Integer
Private Sub Form_Load()
i = 0
End SubPrivate Sub Timer1_Timer()
Timer1.Interval = 100
Command1.Move i
i = i + 100
End Sub楼主可以研究研究这段简单的代码,也许有帮助~~
Private Ball(1 To 2) As Shape
Private dx(1 To 2) As LongPrivate Sub Form_Load()
ScaleMode = vbPixels
WindowState = vbMaximized
Set Ball(1) = Controls.Add("VB.Shape", "Ball1")
Ball(1).Shape = vbShapeCircle
Ball(1).Move 0, 200, 100, 100
Ball(1).Visible = True
dx(1) = 1
Set Ball(2) = Controls.Add("VB.Shape", "Ball2")
Ball(2).Shape = vbShapeCircle
Ball(2).Move 500, 200, 100, 100
Ball(2).Visible = True
Set Timer1 = Controls.Add("VB.Timer", "Timer1")
Timer1.Interval = 10
Timer1.Enabled = True
End SubPrivate Sub Timer1_Timer()
If dx(1) Then
Ball(1).Left = Ball(1).Left + dx(1)
If Ball(2).Left - Ball(1).Left = 100 Then
dx(2) = dx(1)
dx(1) = 0
End If
Else
Ball(2).Left = Ball(2).Left + dx(2)
End If
End Sub
Private Const SRCCOPY = &HCC0020
Private Declare Function BitBlt Lib "gdi32" _
(ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, _
ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As LongDim IsPlaying As Boolean '动画是否启动
Dim DetaX%, DetaY% '沿X、Y轴的移动位置增量Private Sub Form_Load()
IsPlaying = False '开始时,动画未启动
Image1.ToolTipText = "开始" '鼠标移到书上时,将出现“开始”提示
DetaX% = 100 '沿X轴的移动位置增量为100单位
DetaY% = 100 '沿Y轴的移动位置增量为100单位
End SubPrivate Sub Image1_Click() '用鼠标左键点击了书
If IsPlaying Then '动画已启动,则停止
IsPlaying = False
Timer1.Enabled = IsPlaying
Image1.ToolTipText = "开始"
Else '动画未启动,则启动
IsPlaying = True
Timer1.Enabled = IsPlaying
Image1.ToolTipText = "停止"
End If
End SubPrivate Sub Timer1_Timer() 'Timer事件
'移动Image对象
Image1.Move Image1.Left + DetaX%, Image1.Top + DetaY%'碰到边界,则校正位置,并反向
If Image1.Left + Image1.Width >= Form1.Width Then '碰到右边界
'Image1.Move Form1.Width - Image1.Width, Image1.Top
DetaX% = -DetaX%
ElseIf Image1.Top + Image1.Height >= Form1.Height Then '碰到下边界
'Image1.Move Image1.Left, Form1.Height - Image1.Height
DetaY% = -DetaY%
ElseIf Image1.Left <= 0 Then '碰到左边界
'Image1.Move 0, Image1.Top
DetaX% = -DetaX%
ElseIf Image1.Top <= 0 Then '碰到上边界
'Image1.Move Image1.Left, 0
DetaY% = -DetaY%
End If
End Sub窗体上加一Timer控件,一Image。