| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 490 人关注过本帖
标题:hl0071 原帖: [求助]
只看楼主 加入收藏
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
结帖率:100%
收藏
 问题点数:0 回复次数:8 
hl0071 原帖: [求助]

抱歉,我刚才没有管理好帖子。现在为 hl0071 重新发表:


靠,我是一个新手,刚学VB没几天,现在遇到一个问题,想请教一下各位大腕们,是这样的,我想用PICTURE和TIMER来实现图象在窗体内像桌球一样弹来弹去,就像一些网站上的悬浮广告一样,我编了下面的代码但就是不行:

Private Sub Form_Load()
Timer1.Interval = 10
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim a As Integer, b As Integer, c As Integer
a = Picture1.Left + 50
b = Picture1.Top - 50
For a = 0 To Form1.Width - Picture1.Width " 不知道用循环结构行不行"
Select Case a
Case Is > Form1.Width - Picture1.Width
a = Picture1.Left - 50
Case Is < 0
a = Picture1.Left + 50
End Select
Next a
For b = 0 To Form1.Height - Picture1.Height
Select Case b
Case Is < 0
b = Picture1.Top + 50
Case Is > Form1.Height - Picture1.Height
b = Picture1.Top - 50
End Select
Next b
Picture1.Move a, b
End Sub

这样图像一下子跑到右下角就不动了,不知道哪里错了,请多多指教.另外我又编了另外一个代码还是不行:

Private Sub Form_Load()
Timer1.Interval = 10
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim a As Integer, b As Integer, c As Integer
a = Picture1.Left + 50
b = Picture1.Top - 50
if a> Form1.Width - Picture1.Width then
a = Picture1.Left - 50
end if
if a< 0 then
a = Picture1.Left + 50
end if
if b < 0 then
b = Picture1.Top + 50
end if
if b>Form1.Height - Picture1.Height then
b = Picture1.Top - 50
end if

Picture1.Move a, b
end sub

这样的结果还是不行,跑到右上角在那干动就是不回过来
搜索更多相关主题的帖子: 广告 网站 blank target color 
2005-11-13 11:48
hl0071
Rank: 1
等 级:新手上路
帖 子:125
专家分:0
注 册:2005-11-11
收藏
得分:0 
多谢了,非常荣幸

一切都是快乐的
2005-11-13 11:56
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 

设置timer的IntervalMXMY控制速度。

Dim
MY As Integer
Dim MX As Integer
Private Sub Command1_Click()
Randomize
MY = 50 'Rnd * 100 + 1
MX = 50 'Rnd * 100 + 1
Timer1 = True
End Sub

Private Sub Timer1_Timer()
FsH = Form1.ScaleHeight '- 1
FsW = Form1.ScaleWidth '- 1
If Picture1.Left <= 0 Then MX = -MX
If Picture1.Left + Picture1.Width >= FsW Then MX = -MX
If Picture1.Top <= 0 Then MY = -MY
If Picture1.Top + Picture1.Height >= FsH Then MY = -MY

Picture1.Left = Picture1.Left + MX
Picture1.Top = Picture1.Top + MY

Picture1.Move Picture1.Left, Picture1.Top
End Sub


快上课了……
2005-11-13 11:57
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 


本来还想他负10B,才让他看~回复的时候居然被删除了。。。leon2啊

快上课了……
2005-11-13 11:58
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

Option Explicit

Dim iUD As Integer '控制上下移动方向, 1 = 上, 2 = 下
Dim iLR As Integer '控制左右移动方向, 1 = 左, 2 = 右
Dim l As Integer, t As Integer

Private Sub Form_Load()

'将移动方向定为向右上方移动

iUD = 1
iLR = 2
Timer1.Interval = 10
Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()

If iUD = 1 Then '上
t = Picture1.Top - 50
ElseIf iUD = 2 Then '下
t = Picture1.Top + 50
End If

If iLR = 1 Then '左
l = Picture1.Left - 50
ElseIf iLR = 2 Then '右
l = Picture1.Left + 50
End If

If l < 0 Then '到达左边缘,反弹
iLR = 2
ElseIf l > Form1.Width - Picture1.Width Then '到达右边缘,反弹
iLR = 1
End If
If t < 0 Then '到达顶部,反弹
iUD = 2
ElseIf t > Form1.Height - Picture1.Height Then '到达底部,反弹
iUD = 1
End If

Picture1.Move l, t

End Sub

我不明白,你为什么会想到在 Timer 控件内用循环呢!?

2005-11-13 12:09
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

slore 心生邪念,可不是好版主所有的啊……

2005-11-13 12:11
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
他提问题还要1B才能浏览,这个是对他的……

快上课了……
2005-11-13 12:24
leon2
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:731
专家分:0
注 册:2005-3-18
收藏
得分:0 

他不是说了吗,刚才是试了一下,不让别人看见,现在把字扩大,论坛菜鸟啊

2005-11-13 12:27
slore
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1108
专家分:0
注 册:2005-7-1
收藏
得分:0 
斑竹可以看到。。。

他不是说了吗,刚才是试了一下
写例子没看到

快上课了……
2005-11-13 12:29
快速回复:hl0071 原帖: [求助]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030050 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved