Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Objektin liikutus "pehmeästi"

Meitsi [25.09.2004 18:21:36]

#

Tällä koodilla voi liikuttaa tiettyä objektia sulavasti. Liike alkaa nopeutuen ja pysähtyy hidastumalla, ei "seinään". Luo formille kaksi nappia (command1,command2) ja yksi timer (timer1). Luo myös moduuli, omaa tietotyyppiämme varten. Muuttujien käyttö on kuvattu kommenteissa.


Jos haluat nopeusmittarin, laita formille ProgressBar (progressbar1) ja lisää tämä koodi:

Timeriin:
ProgressBar1.Value = (100 / maksimiNopeus) * nopeus
Form-onLoadiin:
ProgressBar1.Min = 0
ProgressBar1.Max = 100


25.syys.-04 18:56 Muutettu koodia hiukan. Laitoin väli-ilmansuunnat ja reset-napin.
25.syys.-04 19:16 Laitoin if:ien tilalle select case:n ja kontrollien määrittelyyn enum:in.

Form1

'Alustetaan muuttujat
Dim nopeus As Integer
Dim mennaanX As Integer
Dim mennaanY As Integer
Dim näppäinYlhäällä As Integer
Dim maksimiNopeus As Integer
Dim nappiSivuPituus As Integer
'Määritellään näppäimet joita käytetään
Enum kontrollit
    ylös = vbKeyNumpad8
    alas = vbKeyNumpad2
    vasen = vbKeyNumpad4
    oikea = vbKeyNumpad6
    koillinen = vbKeyNumpad9
    kaakko = vbKeyNumpad3
    lounas = vbKeyNumpad1
    luode = vbKeyNumpad7
End Enum
'Alustetaan muuttuja, joka pitää sisällään tiedon käytettävistä kontrolleista
Dim kontrollit As ohjaus

Private Sub Command2_Click()
    nopeus = 0
    mennaanX = 0
    mennaanY = 0
    näppäinYlhäällä = 1
    Command1.Top = 100
    Command1.Left = 100
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    'Tutkitaan mitä näppäintä käyttäjä painaa, otetaan käytettävät kontrollit selville omasta tietotyypistämme
    Select Case KeyCode
        Case kontrollit.vasen
            näppäinYlhäällä = 0
            mennaanX = -1
            mennaanY = 0
        Case kontrollit.ylös
            näppäinYlhäällä = 0
            mennaanX = 0
            mennaanY = -1
        Case kontrollit.oikea
            näppäinYlhäällä = 0
            mennaanX = 1
            mennaanY = 0
        Case kontrollit.alas
            näppäinYlhäällä = 0
            mennaanY = 1
            mennaanX = 0
        Case kontrollit.koillinen
            näppäinYlhäällä = 0
            mennaanY = -1
            mennaanX = 1
        Case kontrollit.kaakko
            näppäinYlhäällä = 0
            mennaanY = 1
            mennaanX = 1
        Case kontrollit.lounas
            näppäinYlhäällä = 0
            mennaanY = 1
            mennaanX = -1
        Case kontrollit.luode
            näppäinYlhäällä = 0
            mennaanY = -1
            mennaanX = -1
    End Select
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
    'Käyttäjä päästi näppäimen ylös
    näppäinYlhäällä = 1
End Sub

Private Sub Form_Load()
    'Nopeus on aluksi nolla
    nopeus = 0
    'Miten usein päivitetään napin paikkaa, mitä pienempi, sitä useammin päivitetään
    Timer1.Interval = 1
    'Oletamme, että kaikki näppäimet ovat ylhäällä aluksi
    näppäinYlhäällä = 1
    'Miten nopeasti nappi voi liikkua
    maksimiNopeus = 30
    'Napin sivun pituus
    nappiSivuPituus = 30
    'Määritellään formin tietoja
    Form1.AutoRedraw = True
    Form1.ScaleMode = 3
    Form1.Caption = "Ohjaa nappia käyttämällä numeronäppäimistöä"
    Form1.KeyPreview = True
    'Määritellään nappien tietoja
    Command1.Height = nappiSivuPituus
    Command1.Width = nappiSivuPituus
    Command1.Top = 100
    Command1.Left = 100
    Command1.Caption = "[ ]"
    Command2.Caption = "Reset"
End Sub

Private Sub Timer1_Timer()
    'Liikutetaan nappia
    If näppäinYlhäällä = 0 Then
        'Valvotaan, ettei maksiminopeutta ylitetä
        If nopeus < maksimiNopeus Then
            'Lisätään nopeutta
            nopeus = nopeus + 1
        End If
            If mennaanY = -1 Then
                Command1.Top = Command1.Top - nopeus
            ElseIf mennaanY = 1 Then
                Command1.Top = Command1.Top + nopeus
            End If
            If mennaanX = -1 Then
                Command1.Left = Command1.Left - nopeus
            ElseIf mennaanX = 1 Then
                Command1.Left = Command1.Left + nopeus
            End If
    ElseIf näppäinYlhäällä = 1 And nopeus > 0 Then
    'Käyttäjä vapautti näppäimen, hidastetaan napin nopeutta
    nopeus = nopeus - 1
            If mennaanY = -1 Then
                Command1.Top = Command1.Top - nopeus
            ElseIf mennaanY = 1 Then
                Command1.Top = Command1.Top + nopeus
            End If
            If mennaanX = -1 Then
                Command1.Left = Command1.Left - nopeus
            ElseIf mennaanX = 1 Then
                Command1.Left = Command1.Left + nopeus
            End If
    End If
End Sub

Module1

'Määritellään ohjaus-tyyppi
Type ohjaus
    ylös As Integer
    alas As Integer
    oikea As Integer
    vasen As Integer
    koillinen As Integer
    kaakko As Integer
    lounas As Integer
    luode As Integer
End Type

mankeli [25.09.2004 19:20:58]

#

goatse ok

Vastaus

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

Tietoa sivustosta