Jag har gjort ett spel men det är lite tråkigt för det styrs med commando boxar i formen. Nu vill jag göra så att styrningen görs med piltangeterna. <code> Föreslår att man även har en case sats i KeyUp och flyttar bara kontrollen en gån i stället för fyra gånger som det blir i värsta fallet. >¨finns det något lättare sät Jag lärde mig använda piltangenterna styra med piltangenter
jag har försökt med if komando men jag har inte fått det att funka. (jag vet inte var jag ska skriva koden heller). vore tacksam för hjälp.Sv: styra med piltangenter
Option Explicit
Dim lLeft As Boolean
Dim lright As Boolean
Dim lUp As Boolean
Dim lDown As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft
lLeft = True
Case vbKeyRight
lright = True
Case vbKeyUp
lUp = True
Case vbKeyDown
lDown = True
End Select
End Sub
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
lLeft = False
lright = False
lUp = False
lDown = False
End Sub
Private Sub Timer1_Timer()
If lLeft = True Then Label1.Left = Label1.Left - 50
If lright = True Then Label1.Left = Label1.Left + 50
If lUp = True Then Label1.Top = Label1.Top - 50
If lDown = True Then Label1.Top = Label1.Top + 50
End Sub
</code>
så skulle jag göra
/bjSv: styra med piltangenter
<code>
Option Explicit
Private mKeyLeft As Boolean
Private mKeyUp As Boolean
Private mKeyRight As Boolean
Private mKeyDown As Boolean
Private mSpeedX As Single
Private mSpeedY As Single
Private Sub Form_Load()
mSpeedX = Me.ScaleX(1, vbPixels, Me.ScaleMode)
mSpeedY = Me.ScaleY(1, vbPixels, Me.ScaleMode)
Me.KeyPreview = True ' Sätts lämpligast i designläge
End Sub
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 Timer1_Timer()
Dim DeltaX As Single
Dim DeltaY As Single
If mKeyLeft Then DeltaX = -mSpeedX
If mKeyRight Then DeltaX = DeltaX + mSpeedX
If mKeyUp Then DeltaY = -mSpeedY
If mKeyDown = True Then DeltaY = DeltaY + mSpeedY
Label1.Move Label1.Left + DeltaX, Label1.Top + DeltaY
End Sub
</code>Sv: styra med piltangenter
tror du att vi säger det svåraste sättet som finns?
vi säger det lättaste..och om du nu vill ha ett enklare sätt....gör det själv...jag kommer inte på något lättare sätt...
/bjSv: styra med piltangenter
här:
http://www.ccsweden.se/visbasic/lekt38.html
// Tor Erik