2013-05-02 2 views
0

Xna.Framwork.Input을 사용하여 키보드에서 키를 눌렀는지 확인하려고하지만 사용하는 메서드가 아닙니다. 일하러가.GetState.IsKeyDown()이 true를 반환하지 않음 (Microsoft.Xna.Framework.Input.Keyboard)

내 코드 (만 중요한 부분) :

using System.Threading; 
using Microsoft.Xna.Framework.Input; 
using Microsoft.Xna.Framework; 

private static void GetInput() { 
    for (int i = 0; i < 1000; i++) { 
     Update(); 

     if (IsKeyPressed(Keys.W)) { 
      Console.WriteLine("W pressed"); 
     } 
     if (IsKeyPressed(Keys.S)) { 
      Console.WriteLine("S pressed"); 
     } 

     Thread.Sleep(10); 
    } 
} 

public static KeyboardState CurrentKeyboardState { get; private set; } 

public static void Update() { 
    CurrentKeyboardState = Keyboard.GetState(); 
} 


public static bool IsKeyPressed(Keys key) { 
    return CurrentKeyboardState.IsKeyDown(key); 
} 

가 아무리 눌러 무엇을, "IsKeyPressed 없다"는 true를 반환하지 않습니다.

이 방법은 새 스레드에서 실행되지만 주 스레드에서 실행하면 아무 것도 변경되지 않습니다.

나는, XNA 게임 스튜디오 4.0

내 코드가 잘못을 .NET 4.5, 윈도우 7의 x64를 비주얼 스튜디오 2012 얼티밋 업데이트 1을 사용하고 있습니다 또는 문제는 다른 곳입니까?

답변

1

입력 어쩌면 때문에 창 메시지 루프, threadable없는 당신이 다른 구속가없는 경우

, 당신은 XNA에서 제공하는 게임 클래스를 사용하고 내부 Input.GetState를 호출해야한다, 메인 쓰레드에 메소드 업데이트 ... 원하는 스레드에서 keyboarstate를 사용할 수 있습니다.

관련 문제