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 Sub
Tä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 Sub
Ton 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.