【问题标题】:Picture changing in vb6vb6中的图片变化
【发布时间】:2010-06-27 23:27:35
【问题描述】:

我正在从 pdf 文件中尝试此脚本。如果单击目标图像应更改为爆炸图像,但目标图像不会从站立图像更改,我卡住了。请帮助!

Option Explicit

Dim fiPlayersScore As Integer
Dim fiNumberofMisses As Integer
Dim fbTargetHit As Boolean
Private Sub Form_Load()
Randomize
imgTarget.Enabled = False
imgTarget.Visible = False
cmdStop.Enabled = False
lblGameOver.Visible = False
lblGameOver.Enabled = False
End Sub
Private Sub cmdStart_Click()
Dim lsUserResponse As String
Dim lbResponse As Boolean

lsUserResponse = InputBox("Enter a level from 1 to 3." & _
(Chr(13)) & "" & (Chr(13)) & "1 being  the Easiest and 3 being the " & _
"Hardest.", "Level Select", "1")
lbResponse = False
If lsUserResponse = "1" Then
Timer1.Interval = 1500
lbResponse = True
ElseIf lsUserResponse = "2" Then
Timer1.Interval = 1000
lbResponse = True
ElseIf lsUserResponse = "3" Then
Timer1.Interval = 750
lbResponse = True
Else
MsgBox ("Game Not Started.")
lbResponse = False
End If
If lbResponse = True Then
cmdStart.Enabled = False
imgTarget.Picture = imgStanding.Picture 

frmMain.MousePointer = 5
fbTargetHit = False
Load_Sounds
cmdStop.Enabled = True
fiPlayersScore = 0
fiNumberofMisses = 0
lblScore.Caption = fiPlayersScore
lblMisses.Caption = fiNumberofMisses
Timer1.Enabled = True
lblGameOver.Visible = False
lblGameOver.Enabled = False
End If
End Sub

Private Sub cmdStop_Click()
Unload_Sounds
frmMain.MousePointer = vbNormal
Timer1.Enabled = False
imgTarget.Enabled = False
imgTarget.Visible = False
cmdStart.Enabled = True
cmdStop.Enabled = False
cmdStart.SetFocus
lblGameOver.Visible = True
lblGameOver.Enabled = True
End Sub

Private Sub Form_Click()
MMControl1.Command = "Play"
MMControl1.Command = "Prev"
fiNumberofMisses = fiNumberofMisses + 1
lblMisses.Caption = fiNumberofMisses
If CheckForLoose = True Then
cmdStop_Click
lblMisses.Caption = fiNumberofMisses
Exit Sub
End If
End Sub

Private Sub imgTarget_Click()
MMControl2.Command = "Play"
MMControl2.Command = "Prev"
Timer1.Enabled = False
imgTarget.Picture = imgExplode.Picture '**I AM STUCK HERE**
pauseProgram

fiPlayersScore = fiPlayersScore + 1
Timer1.Enabled = True
If CheckForWin = True Then
cmdStop_Click
lblScore.Caption = fiPlayersScore
Exit Sub
End If
lblScore.Caption = fiPlayersScore
fbTargetHit = True
imgStanding.Enabled = False
imgTarget.Visible = False
imgTarget.Enabled = False
Timer1.Enabled = True
End Sub
Public Sub Load_Sounds()
'Set initial property values for blaster sound
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = "WaveAudio"
MMControl1.FileName = _
"C:\Temp\Sounds\Blaster_1.wav"
'Open the media device
 MMControl1.Command = "Open"

 Private Sub Timer1_Timer()
 Dim liRandomLeft As Integer
 Dim liRandomTop As Integer
 imgTarget.Visible = True
 If fbTargetHit = True Then
 fbTargetHit = False
 imgTarget.Picture = imgStanding.Picture
 End If
 liRandomLeft = (6120 * Rnd)
 liRandomTop = (4680 * Rnd)
 imgTarget.Left = liRandomLeft
 imgTarget.Top = liRandomTop
 imgTarget.Enabled = True
 imgTarget.Visible = True
 End Sub

 Public Function CheckForWin() As Boolean
 CheckForWin = False
 If fiPlayersScore = 5 Then
 CheckForWin = True
 lblGameOver.Caption = "You Win.Game Over"
 End If
 End Function
 Public Function CheckForLoose() As Boolean
 CheckForLoose = False
 If fiNumberofMisses = 5 Then
 CheckForLoose = True
 lblGameOver.Caption = "You Loose.Game Over"
 End If
 End Function

Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
Unload_Sounds
End Sub
Public Sub Unload_Sounds()
MMControl1.Command = "Close"
MMControl2.Command = "Close"
End Sub
Public Sub pauseProgram()
Dim currentTime
Dim newTime
currentTime = Second(Time)
newTime = Second(Time)
Do Until Abs(newTime - currentTime) >= 1
newTime = Second(Time)
Loop
End Sub

【问题讨论】:

    标签: vb6


    【解决方案1】:

    编辑:

    imgTarget.Picture = imgExplode.Picture
    imgTarget.Refresh 
    

    【讨论】:

    • 用于多张图片并使用计时器自动加载
    • 为什么不在点击事件的图片列表中加载新图片。
    • 找不到图片列表控件
    • 要将 ImageList 控件添加到您的 VB 项目中,请单击项目|组件,然后选中 Microsoft Windows 公共控件旁边的框
    • 感谢在谷歌上搜索后我知道了如何添加图像列表控件。在运行脚本时错误消息是 m_index 变量未定义。所以我在开始时添加了 Private m_Index As Integer Private m_NumImages As Integer 和Private Sub imgTarget_Click() m_Index = ((m_Index + 1) Mod m_NumImages) + 1 imgTarget.Picture = ImageList1.ListImages(m_Index).Picture 但结果和之前一样
    【解决方案2】:

    注意:

    Set imgTarget.Picture = imgExplode.Picture
    imgTarget.Refresh
    

    会比

    更快
    imgTarget.Picture = imgExplode.Picture
    imgTarget.Refresh
    

    如果 imgExplode 将在 imgTarget 的生命周期内出现(第一个命令复制图像,Set 命令引用图像)。

    【讨论】:

    • 抱歉,Kris,回答问题稍晚
    猜你喜欢
    • 2023-03-03
    • 2015-01-04
    • 2018-03-15
    • 2015-03-28
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多