大家来看看,帮我解释解释

莫情莫钱 2004-10-13 09:07:03
Private Sub Form_Load()
Shape1.Top = 0
Shape1.Left = 0
End Sub

Private Sub Timer1_Timer()
Dim a As Shape
Set a = Shape1
If a.Left < Me.Left Then
a.Left = a.Left + 10
Else
a.Left = a.Left - 10
End If
End Sub
这个问题真有点头痛,忙烦高手们了;为什么shape, 它到一定的范围就停止运动了,还没到指定的范围.
左右是这样,上下也是这样,在线解答,快快!!!
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
莫情莫钱 2004-10-20
  • 打赏
  • 举报
回复
怎么没有人光顾我的问题啊
好555555
莫情莫钱 2004-10-17
  • 打赏
  • 举报
回复
没人在了吗????
莫情莫钱 2004-10-15
  • 打赏
  • 举报
回复
楼上的兄弟
能不能交个朋友啊
我还会有很多问题要问的
加我qq297415665
Tiger_Zhao 2004-10-14
  • 打赏
  • 举报
回复
如果楼主的意图是想让 Shape 在边沿做反弹运动,代码应该如下

Private dx As Long
Private dy As Long

Private Sub Form_Load()
Timer1.Enabled = False
Shape1.Top = 0
Shape1.Left = 0
dx = 10
dy = 10
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim a As Shape
Set a = Shape1
If a.Left < 0 Then
dx = 10
ElseIf a.Left > (ScaleWidth - a.Width) Then
dx = -10
End If
If a.Top < 0 Then
dy = 10
ElseIf a.Top > (ScaleHeight - a.Height) Then
dy = -10
End If
a.Move a.Left + dx, a.Top + dy
End Sub
莫情莫钱 2004-10-14
  • 打赏
  • 举报
回复
改大的值我也试过啊
trickster 2004-10-14
  • 打赏
  • 举报
回复
楼上的说得对,twips的10太小了,而窗体的scalemode默认是用1-twip的

楼主要看明显效果的话把10换成大一点的数吧,或者把窗体的scalemode改成3-pixel
qiqi5521 2004-10-14
  • 打赏
  • 举报
回复
有两点疑问:
1 . me 就是 form ,那么 它用的是屏幕坐标系,shape控件用 form 的坐标系, 那么 If a.Left < Me.Left Then 是什么意思?
2.form 的坐标如果是 以 twips 为单位,则10是非常小的,不容易看出来
莫情莫钱 2004-10-14
  • 打赏
  • 举报
回复
zen me mei ren hui da l
莫情莫钱 2004-10-13
  • 打赏
  • 举报
回复
jh8848 不是一样的
没什么什么区别吧
莫情莫钱 2004-10-13
  • 打赏
  • 举报
回复
10啊100也试过啊
风之浪漫 2004-10-13
  • 打赏
  • 举报
回复
你的程序能用啊!~
不过我改了一下!~
程序如下:
Private Sub Form_Load()
Timer1.enabled=false
Shape1.Top = 0
Shape1.Left = 0
Timer1.Enabled=ture
End Sub
Andy__Huang 2004-10-13
  • 打赏
  • 举报
回复
你的Timer1_Timer是每多少時間運行一次﹖如果時間隔得很小﹐你是根本看不出來的,因為加一次與減一次的時間非常接近

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧