我想在visual basic中制作经典的砖块游戏。在对撞击球的矩形的运动进行编码时,我遇到了问题。释放钥匙时矩形滞后。当我按A,松开它并同时按下D时,音量会暂停一会儿,然后向右移动。
这是我的计划的一部分。
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If rectangleLeft = True And RectangleShape1.Left >= Me.ClientRectangle.Left + 2 Then
RectangleShape1.Left -= 2
End If
If rectangleRight = True And RectangleShape1.Right <= Me.ClientRectangle.Right - 2 Then
RectangleShape1.Left += 2
End If
End Sub
Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.A Then
rectangleRight = False
rectangleLeft = True
End If
If e.KeyCode = Keys.D Then
rectangleLeft = False
rectangleRight = True
End If
End Sub
Private Sub Form1_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp
rectangleLeft = False
rectangleRight = False
End Sub
结束课程 强文
答案 0 :(得分:0)
滞后是由重复延迟引起的,这是一个BIOS / Windows功能;通过控制面板控制。您需要做的是使用计时器检查所需键位置的状态,并在键处于按下位置时处理移动。
在计时器循环中使用此win32 API方法: 公共声明函数GetKeyPress Lib&#34; user32&#34;别名&#34; GetAsyncKeyState&#34; (ByVal key As Integer)As Integer
Dim i As Integer = GetKeyPress(Keys.A)
未按下时为0,按下时为-32768