Hejsan... Hej men själva grejjen är ju att den ska funka i key press... Då får du väl lägga koden i KeyDown din dum... djäää. :-) hehe jo får väl göra det... bara att det blir super error om man håller ner knappen, men det går ju att fixa. Hmm..har för mig att jag kollade på ett RPG exempel som använde ett API-anrop som kollade vilka knappar som man höll in...då kan man lägga den i en egen sub och kolla den med en timer med en intervall som är rätt låg... Om du ska styra ett objekt är det enklare att göra så här:VbKeyLeft....!?
Undrar hur jag kan få saker att hända när jag trycker ner någon piltangent?
Koden jag har ligger i form_keypress och består av en select case sats...
Men när jag skulle köra med piltagnterna så funkade inte det så nu köra jag med a, w, s och d. Finns det nåt sätt så jag slipper ha dom i keydown?
Snart ska jag hem :) // R-musSv: VbKeyLeft....!?
Du skall sätta Formen KeyPreview till True.
Sen skall du skriva koden i Formens KeyUp händelse.
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyLeft Then
' .......................
'.......................
End If
End Sub
SvenSv: VbKeyLeft....!?
det är till ett spel så det är väldigt vilktigt att händelsen utförs när man trycker och inte när man släpper (ytefall man skulle hålla den nere)
tack för svaret sevn // R-musSv: VbKeyLeft....!?
Sven som skojar med hårda ord :-)Sv: VbKeyLeft....!?
Skulle bara höra om det gick att ha kvar koden i keypress... tydligen inte..
jäjä det löser sig ändå // R-musSv: VbKeyLeft....!?
tror det var GetAsyncKeyState.
/bjSv: VbKeyLeft....!?
<code>
Option Explicit
Private mKeyLeft As Boolean
Private mKeyUp As Boolean
Private mKeyRight As Boolean
Private mKeyDown As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
mKeyLeft = True
Case vbKeyUp
mKeyUp = True
Case vbKeyRight
mKeyRight = True
Case vbKeyDown
mKeyDown = True
End Select
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
mKeyLeft = False
Case vbKeyUp
mKeyUp = False
Case vbKeyRight
mKeyRight = False
Case vbKeyDown
mKeyDown = False
End Select
End Sub
Private Sub Form_Load()
KeyPreview = True
End Sub
Private Sub Timer1_Timer()
Dim DeltaLeft As Single
Dim DeltaTop As Single
If mKeyLeft Then
DeltaLeft = -ScaleX(1, vbPixels)
End If
If mKeyUp Then
DeltaTop = -ScaleY(1, vbPixels)
End If
If mKeyRight Then
DeltaLeft = DeltaLeft + ScaleX(1, vbPixels)
End If
If mKeyDown Then
DeltaTop = DeltaTop + ScaleY(1, vbPixels)
End If
If DeltaLeft <> 0 Or DeltaTop <> 0 Then
Shape1.Move Shape1.Left + DeltaLeft, Shape1.Top + DeltaTop
End If
End Sub
</code>