使用XNA执行鼠标,键盘点击

时间:2011-07-14 17:10:54

标签: c# xna

我想知道如何执行鼠标右键单击,或者使用XNA按ENTER,是否可以?我希望XNA编程执行操作,而不是检查我是否单击它。 感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用以下命令使鼠标光标可见(如果有必要):

protected override void Initialize()
{
   // Make mouse visible
   this.IsMouseVisible = true;

   base.Initialize();
}

创建以下变量,这样就可以保存当前和之前的mouseState:

MouseState mouseStateCurrent, mouseStatePrevious;

在更新功能中,您可以使用以下内容:

protected override void Update(GameTime gameTime)
{
    // Allows the game to exit
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
    {
        this.Exit();
    }

    // Get current mouseState
    mouseStateCurrent = Mouse.GetState();

    // Left MouseClick
    if (mouseStateCurrent.LeftButton == ButtonState.Pressed)
    {
        // TODO when left mousebutton clicked
    }

    // Right MouseClick
    if (mouseStateCurrent.RightButton == ButtonState.Pressed && mouseStatePrevious.RightButton == ButtonState.Released)
    {
        //TODO when right mousebutton clicked
    }

    mouseStatePrevious = mouseStateCurrent;


    // Update
    base.Update(gameTime);
}

希望这对你有用!

答案 1 :(得分:0)

只需调用点击即可调用的功能

因此,当用户点击时会调用leftClick,但您可以随时调用该函数

编辑:如果你想自己调用mouseClick(而不是leftClick),你可以做的另一件事就是发送自己的变量,并为你想要定义的不同状态设置枚举。

enum CLICKS{left=0, right, middle);
public void mouseClick(){
  mouseClick(-1);
}

public void mouseClick(int manualClick){

  if(mouseStateCurrent.LeftButton == ButtonState.Pressed || manualClick == CLICKS.left)
    leftClick();

}

public void leftClick(){
  //do stuff
}

public void randomFunction(){
  //doing stuff
  mouseClick(CLICKS.left); //<-- will simulate a left click
}

答案 2 :(得分:0)

如果您想模拟按下真正的鼠标,可以使用SendInput Win32方法。

这并不像这里提供的技术那么容易,但游戏无法区分这些点击是来自真实用户点击还是模拟点击。

另请查看讨论同一问题的StackOverflow question