【问题标题】:Perform a mouse,keyboard clicks using XNA使用 XNA 执行鼠标、键盘点击
【发布时间】:2012-08-23 03:37:16
【问题描述】:

我想知道如何执行,例如单击鼠标右键或使用 XNA 按 ENTER,这可能吗?我希望 XNA prog 执行该操作,而不是检查我是否单击了它。 谢谢。

【问题讨论】:

  • 我也添加了对这个问题的答案,我希望这就是你所说的点击:)。
  • @citroenfris 大声笑,我实际上是想做自动点击器,我在帖子中说过,我不想实际点击,我希望它自动点击,但是没有任何东西连接到 XNA,但是无论什么病都接受你的回答大声笑

标签: c# xna


【解决方案1】:

您可以使用以下方法使鼠标光标可见(如果需要):

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);
}

希望对你有用!

【讨论】:

    【解决方案2】:

    只需调用点击会调用的函数

    所以当用户点击时 leftClick 会被调用,但你可以随时调用该函数

    edit:如果您想自己调用 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
    }
    

    【讨论】:

    • 假设用户点击鼠标,你会调用 mouseClick();无需等待用户点击,只需自己调用该函数即可。希望我能正确理解您的问题
    • 但问题是,我在 mouseClick 方法中有一个 if :if(mouseStateCurrent.LeftButton == ButtonState.Pressed)
    • 如果当前状态是左键怎么办?不管是什么,把它变成一个函数,然后调用它来模拟点击
    • 非常感谢您的帮助,但我仍然不明白,我从哪里获得 XNA 的点击?
    【解决方案3】:

    如果你想模拟真实的鼠标按下,可以使用SendInputWin32方法。

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

    还可以查看讨论相同问题的 StackOverflow question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 2018-08-05
      • 1970-01-01
      • 2017-11-21
      • 2014-02-13
      相关资源
      最近更新 更多