XNA中支持PC上的键盘、鼠标,WP的触摸、手势和Xbox 360的手柄输入。
键盘输入
键盘输入是通过Microsoft.XNA.Framework.Input命名空间中的Keyboard类来处理的。Keyboard类有一个叫做GetState的静态方法,用KeyboardState结构的形式返回键盘目前的状态。KeyboardState结构中包含三个能够满足您大部分的功能需求的关键方法,如下:
Keys[]GetPressedKeys() 返回被按下的键的数组
bool IsKeyDown(Keys key) 返回按键是否被按下
bool IsKeyUp(Keys key) 返回按键是否被释放
例如:if ( Keyboard.GetState().IsKeyDown(Keys.A) ),即检查A是否被按下。
鼠标输入
鼠标输入是通过Microsoft.XNA.Framework.Input命名空间中的Mouse类来处理的。Mouse类和Keyboard类行为很类似,也有一个GetState的静态方法,能以MouseState结构的形式从鼠标返回数据。MouseState结构体中的重要属性如下:
属性 类型 描述
LeftButton ButtonState 返回鼠标左键的状态
MiddleButton ButtonState 返回鼠标中键的状态
RightButton ButtonState 返回鼠标右键的状态
ScrollWheelValue int 返回自游戏开始后鼠标滚轮滚动刻度的累加量
X int 返回鼠标光标相对于游戏窗口左上角的水平位置
XButton1 ButtonState 返回某些鼠标上额外的按键的状态
XButton2 ButtonState 返回某些鼠标上额外的按键的状态
Y int 返回鼠标光标相对于游戏窗口左上角的垂直位置
默认情况下鼠标是隐藏的,可以设置Game类的IsMouseVisible属性为true来显示鼠标。
游戏手柄输入
正如上文中类似的,这里需要GamePad类来提供帮助,主要属性如下:
属性 类型 描述
Buttons GamePadButtons 返回一个表示当前哪些按键被按下的结构体
DPad GamePadDPad 返回表示十字键上的哪个键被按下的结构体
IsConnected Boolean 指示手柄目前是否连接到Xbox360
ThumbSticks GamePadThumbSticks 返回一个结构体用来确定模拟摇杆的方向
Triggers GamePadTriggers 返回表示扳机键是否被按下的结构体
GamePadState还有两个主要方法如下:
方法 描述
bool IsButtonDown(Buttons) 传入一个或多个键的按位或运算值
bool IsButtonUp(Buttons) 传入一个或多个键的按位或运算值