Vba 当我释放一个键并快速按下另一个键时,imple游戏会延迟

Vba 当我释放一个键并快速按下另一个键时,imple游戏会延迟,vba,keydown,keyup,Vba,Keydown,Keyup,我想用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 Re

我想用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
Private Sub Timer1\u Tick(ByVal sender作为System.Object,ByVal e作为System.EventArgs)处理Timer1.Tick
如果rectangleLeft=True且RectangleShape1.Left>=Me.ClientRectangle.Left+2,则
矩形1.左-=2
如果结束

如果rectangleRight=True且RectangleShape1.Right延迟是由BIOS/Windows功能的重复延迟引起的;通过控制面板进行控制。您需要做的是使用定时器检查所需钥匙位置的状态,并在钥匙处于按下位置时处理移动

在计时器循环中使用此win32 API方法: 将函数GetKeyPress Lib“user32”别名“GetAsyncKeyState”(ByVal键为整数)声明为整数

    Dim i As Integer = GetKeyPress(Keys.A)
未按下时i为0,按下时i为-32768