29. maj 2001 - 22:55Der er
11 kommentarer og 1 løsning
Haste sag.....
Jeg får snart spat.... Jeg har koden: Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyUp Then mand.Top = mand.Top - 600 End If If KeyCode = vbKeyDown Then mand.Top = mand.Top - 1500 End If If KeyCode = vbKeyLeft Then mand.Top = mand.Top - 1500 End If If KeyCode = vbKeyRight Then mand.Top = mand.Top - 1500 End If End Sub Jeg har en lille mand på min form og han vil simpelhen bare ikke rykke dig en skid....Hvis der er nogle som kan finde ud af det her så skriv gerne...
Hmmm, det burde virke, det du har, men prøv alligvel at tilføje en Me.Refresh :
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyUp Then mand.Top = mand.Top - 600 End If If KeyCode = vbKeyDown Then mand.Top = mand.Top - 1500 End If If KeyCode = vbKeyLeft Then mand.Top = mand.Top - 1500 End If If KeyCode = vbKeyRight Then mand.Top = mand.Top - 1500 End If Me.Refresh End Sub
Du kan også prøve med
If KeyCode = vbKeyRight Then mand.Top = mand.Top - 1500 Debug.Print \"til højre trykket\" End If
Så du kan se, om tastetrykkene overhovedet opfanges
Din picturebox skal naturligvis hedde \'mand\' når du bruger dén kode....
Men anyways, en bedre måde at få det virke er denne: Tilføj en timer til din form, og sæt intervallet til 50 eller deromkring, og brug så flg. kode - så virker det, jeg har lige testet:
Private Declare Function GetKeyState Lib \"user32.dll\" (ByVal nVirtKey As Long) As Integer Dim key As Integer
Private Sub Timer1_Timer() key = GetKeyState(vbKeyUp) If key And &H8000 Then mand.Top = mand.Top - 200 End If
key = GetKeyState(vbKeyDown) If key And &H8000 Then mand.Top = mand.Top + 200 End If
key = GetKeyState(vbKeyLeft) If key And &H8000 Then mand.Left = mand.Left - 200 End If
key = GetKeyState(vbKeyRight) If key And &H8000 Then mand.Left = mand.Left + 200 End If
!!!!!!DET VIRKER!!!!!!! (Hvad betyder det her)??\"Private Declare Function GetKeyState Lib \"user32.dll\" (ByVal nVirtKey As Long) As Integer\" key = GetKeyState(vbKeyRight) If key (Hvad betyder der her)\"And &H8000\" Then mand.Left = mand.Left + 200 End If
Hey hvis du kan klare lige den sidste... Hvordan gør jeg sådan at min mand ikke kan gå ud over formen? Dvs. at det er en slags mur man ikke man træde over..
\'Private Declare Function GetKeyState Lib \"user32.dll\" (ByVal nVirtKey As Long) As Integer\' Denne linie deklarer en Windows API funktion, som du bruger til at returnere en værdi, der fortæller om en tast er trykket ned eller ej. Den værdi der returneres indeholder &H8000, hvis tasten er nedtrykket.
\'If key And &H8000 Then\' Denne linie tjekker om \'key\' indeholder &H8000.
Det må jeg sige..Det er du jo helt god til. Der er bar lige en lille ting.Min mand kan godt komme lidt for mege under...Ikke meget men lidt...Hvad kan det skyldes?
Prøv at lege lidt med værdierne, eller sæt et mindre flyt - interval ind og gør intervallet i timeren mindre.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.