Miten saa spriten liikkumaan KeyCodella?
Se riippunee spriten toteutuksesta, mutta jos sinulla on yksinkertainen GIF-kuva ladattuna Imageen, niin:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Me.ScaleMode = vbPixels
Select Case KeyCode
Case vbKeyLeft
Image1.Left = Image1.Left - 1
Case vbKeyRight
Image1.Left = Image1.Left + 1
Case vbKeyUp
Image1.Top = Image1.Top - 1
Case vbKeyDown
Image1.Top = Image1.Top + 1
End Select
End SubTämän toteutustavan rajallisuus on kuitenkin siinä, että se tukee vain yhtä näppäintä kerrallaan. Lisäämällä mukaan pari Boolean-muuttujaa sekä Timerin saammekin jo useamman näppäimen tuen mukaan:
Option Explicit
Private m_Down As Boolean
Private m_Left As Boolean
Private m_Right As Boolean
Private m_Up As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
m_Left = True
Case vbKeyRight
m_Right = True
Case vbKeyUp
m_Up = True
Case vbKeyDown
m_Down = True
End Select
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
m_Left = False
Case vbKeyRight
m_Right = False
Case vbKeyUp
m_Up = False
Case vbKeyDown
m_Down = False
End Select
End Sub
Private Sub Form_Load()
Me.KeyPreview = True
Me.ScaleMode = vbPixels
Timer1.Enabled = True
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
Dim Left As Single, Top As Single
Left = Image1.Left
Top = Image1.Top
If m_Left Then Left = Left - 1
If m_Right Then Left = Left + 1
If m_Up Then Top = Top - 1
If m_Down Then Top = Top + 1
Image1.Move Left, Top
End SubTon mä kyllä osaan, mutta miten sen sais liikkumaan, kun se on tehty BitBlt:n kaksoispuskuroinnilla.
Ihan samalla tavalla kuin Merrin toisessa esimerkissä, paitsi että Image1:n muuttujien sijaan tarvitset omat muuttujat, joita muutat samalla tavalla ja joiden määräämään kohtaan piirrät kuvan BitBlt:llä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.