Chinaunix首页 | 论坛 | 博客
  • 博客访问: 571910
  • 博文数量: 208
  • 博客积分: 3286
  • 博客等级: 中校
  • 技术积分: 1780
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-24 20:38
文章分类

全部博文(208)

文章存档

2012年(7)

2011年(28)

2010年(21)

2009年(76)

2008年(65)

2007年(11)

我的朋友

分类: C/C++

2008-02-26 14:54:22

在XNA中,输入有3中方式,键盘,鼠标,xbox的手柄。2中模式,数字方式和模拟方式。
 
数字方式 有2个可能的状态,开或者关,用boolean来表示,xbox的手柄上的start键或者时间keyboard的按键。
 
模拟方式 产生一个范围值,xbox的手柄上的摇杆和mouse的移动,可以用很多种方式表示这个范围值。在xbox上用-1.0 ~ 1.0的float值表示摇杆的值;
 
接受键盘输入, 要先创建一个KeyBoardState的对象的句柄,再GetState(),KeyBoard.GetState().
 
接受鼠标输入, 要先创建一个MouseState的对象的句柄,再GetState(),Mouse.GetState().
 
没有xbox, 不操心。
 
 
先说鼠标输入,Mouse.GetState()得到当前鼠标的状态,包括LeftButton,RightButton,MiddleButton,ScrollWheelValue,X,Y,XButton1,XButton2。其中X,Y返回的是坐标值(int型)
LeftButton,RightButton,MiddleButton,ScrollWheelValue,Xbutton1,Xbutton2返回的是Button的状态(state),Pressed和Released。 确定Button的状态需要一个ButtonState枚举(enumeration)
 
ButtonState buttonState = Mouse.GetState().LeftButton;
 
buttonState == ButtonState.Prssed     用来判断鼠标左键是否按下。
 
可以在游戏初始化的时候得到鼠标的状态(oldButtonState),一般鼠标的按键状态为Released。 当按下鼠标键的时候后,鼠标状态产生变化,新鼠标状态(newButtonState)为Pressed。可以用这个状态来确定鼠标是否是第一次按下,
 
if (newButtonState == ButtonState.Pressed && oldButtonState == ButtonState.Released)
            {
                mouseX = current_mouse.X;
                mouseY = current_mouse.Y;
                oldButtonState = ButtonState.Pressed;//记得给oldButtonState赋值。不然一直以为是第一次按下
            }
if (newButtonState == ButtonState.Released)
            {
                oldButtonState = ButtonState.Released;//在此时重新恢复初始值。
            }
 
 
键盘的输入基本和WindowApplication 一样,只是要用到KeyBoard.GetState(),有两个重要函数,IsKeyDown(),IsKeyUp(), 配合Keys枚举(Eunmeration),来判断是那个键被按下或是抬起,
在Keys枚举中有键盘上所有的键。
 
KeyboardState newState = Keyboard.GetState();
 
newState.IsKeysDown(Keys.Space);//判断空格键按下
 

 
 
阅读(1162) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~