游戏循环中的C#键控事件

游戏循环中的C#键控事件,c#,onkeydown,C#,Onkeydown,我正在用C#编写一个游戏,结果被卡住了。所以背景一直在移动,这是通过一个计时器在一个循环中完成的,以确保背景一直在移动。现在,我需要检查用户是否按下空格键将播放器向上移动。如何检查是否存在按键关闭事件?我不能使用按键事件子系统,因为游戏循环一直在工作,所以按键事件子系统不会工作。只是在这里找方向。谢谢 在您的勾号事件中,您可以检查 if (Keyboard.IsKeyDown(Key.Space)) { ... Do stuff } 只是猜测,因为您没有提供任何代码 尝试调用Appli

我正在用C#编写一个游戏,结果被卡住了。所以背景一直在移动,这是通过一个计时器在一个循环中完成的,以确保背景一直在移动。现在,我需要检查用户是否按下空格键将播放器向上移动。如何检查是否存在按键关闭事件?我不能使用按键事件子系统,因为游戏循环一直在工作,所以按键事件子系统不会工作。只是在这里找方向。谢谢

在您的勾号事件中,您可以检查

if (Keyboard.IsKeyDown(Key.Space))
{
    ... Do stuff
}

只是猜测,因为您没有提供任何代码

尝试调用
Application.DoEvents()并根据需要使用

编辑:

好的,这意味着您没有使用游戏循环,但是您有事件驱动的应用程序(通常的win应用程序)。调用
Application.DoEvents()
允许windows在常规游戏循环中处理所有回调(不是您的情况)

我再次更新了代码来展示它是如何工作的——我相信通过示例学习是很好的,但是首先,你必须学习基础知识(对不起,游戏太复杂了,不适合学习C#)


private void tmrTick_Tick(object sender,EventArgs e){//background moving…}private void Form1_KeyDown(object sender,keyentargs b){//Move player Up}应用程序.DoEvents();不会产生任何结果。代码工作时没有任何错误,但不会给出结果按下哪种类型的变量?bool当然(通过指定比较值的结果来指示)。它(很可能)是定义事件的同一类的成员。是否尝试使用大写的K?您使用的是哪个.Net framework版本,应该从3.0版开始提供。这也不太可能。目标.NET框架是4.5.2Oh,对,键盘类似乎是PresentationCore的一部分,PresentationCore是WPF的核心。。。您需要添加对PresentationCore.dll和WindowsBase.dll的引用请参阅
tmrTick
上的
Interval
设置为什么?…Interval设置为100毫秒
private bool isKeyUpPressed;
private void tmrTick_Tick(object sender, EventArgs e) { 
    if (isKeyUpPressed)
    {
        // move player up
    }
} 
private void Form1_KeyDown(object sender, KeyEventArgs b) { 
    isKeyUpPressed = b.KeyCode == Keys.Up;
}