XNA中的鼠标,键盘与操纵杆

XNA中的鼠标,键盘与操纵杆

                                
  XNA中的鼠标,键盘与操纵杆
                                                           
电子科技大学软件学院03级02班 周银辉



1, 鼠标
    对于鼠标有专门的Mouse类.   要检测鼠标的状态,可以通过Mouse类的静态函数GetMouseState()函数, 它将返回一个MouseState对象. 该对象保存了当前鼠标的状态信息. 比如其LeftButton属性指示当前鼠标左键是否被按下或释放.其它鼠标属性值同理.

    而执行鼠标检测的代码您应该在Game的 Update(GameTime gameTime)方法中执行. 除此之外,Game是默认隐藏鼠标的,为了显示鼠标您应该将其IsMouseVisible属性设置为true.

    这是一段示例代码:

   

ExpandedBlockStart.gif
ContractedBlock.gif
/**/
/// <summary>
InBlock.gif        
/// Allows the game to run logic such as updating the world,
InBlock.gif        
/// checking for collisions, gathering input and playing audio.
InBlock.gif        
/// </summary>
ExpandedBlockEnd.gif        
/// <param name=”gameTime”>Provides a snapshot of timing values.</param>



None.gif
        
protected
 
override
 
void
 Update(GameTime gameTime)
ExpandedBlockStart.gifContractedBlock.gif        

dot.gif
{

InBlock.gif            
// Allows the default game to exit on Xbox 360 and Windows
InBlock.gif
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
InBlock.gif                
this.Exit();
InBlock.gif
InBlock.gif         
InBlock.gif
InBlock.gif            
//mouse
InBlock.gif
            MouseState mouseState = Mouse.GetState();
InBlock.gif            
if (mouseState.LeftButton == ButtonState.Pressed)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{

InBlock.gif               
//
ExpandedSubBlockEnd.gif
            }

InBlock.gif
InBlock.gif            
base.Update(gameTime);
InBlock.gif
InBlock.gif
ExpandedBlockEnd.gif        }

2 键盘
   与鼠标类似, 键盘有一个专门的Keyboard类, 要检测键盘的状态请使用Keyboard类的静态方法GetKeyboardState(),它将返回一个KeyboardState对象,该对象保存了当前的键盘状态. 要检测某个键是否被按下或释放可以使用其IsKeyDown(
Keys
key)或IsKeyUp(
Keys
key)方法. 除此之外您还可以使用其GetPressedKeys()方法获取当前被同时按下的几个键.

   与鼠标类似,检测也应该在Update(GameTime gameTime)方法中执行.

    这是一段示例代码:

ExpandedBlockStart.gif
ContractedBlock.gif
 
/**/
/// <summary>
InBlock.gif        
/// Allows the game to run logic such as updating the world,
InBlock.gif        
/// checking for collisions, gathering input and playing audio.
InBlock.gif        
/// </summary>
ExpandedBlockEnd.gif        
/// <param name=”gameTime”>Provides a snapshot of timing values.</param>



None.gif
        
protected
 
override
 
void
 Update(GameTime gameTime)
ExpandedBlockStart.gifContractedBlock.gif        

dot.gif
{

InBlock.gif            
// Allows the default game to exit on Xbox 360 and Windows
InBlock.gif
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
InBlock.gif                
this.Exit();
InBlock.gif
InBlock.gif
InBlock.gif            
//key
InBlock.gif
            KeyboardState keyState = Keyboard.GetState();
InBlock.gif            Keys[] keys 
= keyState.GetPressedKeys();
InBlock.gif            
foreach (Keys key in keys)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{

InBlock.gif                
//
ExpandedSubBlockEnd.gif
            }

InBlock.gif            
InBlock.gif           
InBlock.gif            
base.Update(gameTime);
InBlock.gif
ExpandedBlockEnd.gif        }


None.gif

3 操纵杆
   其有一个专门的类叫做GamePad,检测其状态请使用GetState()方法. 没玩过Xbox360,其操纵杆的参数还不太熟悉. 但至少有一点是值得注意的,操纵杆要进行速度测试,其被保存在GamePadState对象的ThumbSticks属性中.其它的基本与鼠标和键盘类似

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111120.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • aarch64指令集_AArch64应用程序级编程模型

    aarch64指令集_AArch64应用程序级编程模型根据实现选择,体系结构支持多级执行特权,由从EL0到EL3的不同异常级别表示。EL0对应于最低的特权级别,通常被描述为无特权。应用层程序员模型是在EL0上执行软件的程序员模型。系统软件决定异常级别,因此决定软件运行的特权级别。当操作系统同时支持EL1和EL0执行时,应用程序通常在EL0上运行。允许操作系统以唯一的或共享的方式将系统资源分配给应用程序。从其他进程中提供一定程度的保护,因此有助于保护操…

    2022年10月17日
    0
  • 实践作业三 结对项目

    实践作业三 结对项目

    2021年11月18日
    38
  • js高级技巧_JavaScript高级程序

    js高级技巧_JavaScript高级程序下述内容主要讲述了《JavaScript高级程序设计(第3版)》第22章关于“高级技巧”。一、高级函数函数是第一等公民,所有函数都是对象。1.安全的类型检测JavaScript内置的类型检测机制并非完全可靠。varisArray=valueinstanceofArray;以上代码要返回true,value必须是一个数组,而且还必须与Array构造函数在同个全局作用域中。(Array是w

    2022年8月20日
    5
  • 使用Golang实现PHP的Addslashes和Stripslashes「建议收藏」

    使用Golang实现PHP的Addslashes和Stripslashes「建议收藏」//addslashes()函数返回在预定义字符之前添加反斜杠的字符串。//预定义字符是://单引号(’)//双引号(”)//反斜杠(\)funcAddslashes(strstring)string{ tmpRune:=[]rune{} s…

    2022年8月30日
    1
  • 200 : parsererror错误

    200 : parsererror错误原因ajax请求中返回data,与controller中requestMapping方法返回类型不一致导致,或者controller中方法无返回值即void,都可引起该错误。

    2022年6月23日
    28
  • Mysql查看版本号的五种方式介绍

    Mysql查看版本号的五种方式介绍

    2021年10月18日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号