Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Sprite VB6

black cat [21.10.2010 18:29:49]

#

Miten saa spriten liikkumaan KeyCodella?

Merri [22.10.2010 10:06:43]

#

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

black cat [22.10.2010 16:07:04]

#

Ton mä kyllä osaan, mutta miten sen sais liikkumaan, kun se on tehty BitBlt:n kaksoispuskuroinnilla.

Metabolix [22.10.2010 16:12:17]

#

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ä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta