Выполните мышь, щелчки клавиатуры с помощью XNA - PullRequest
1 голос
/ 14 июля 2011

Я хотел бы знать, как я могу выполнить, например, щелчок правой кнопкой мыши или нажать клавишу ВВОД с XNA, возможно ли это? Я хочу, чтобы программа XNA выполняла действие, а не проверяла, нажал ли я на нее. Спасибо.

Ответы [ 3 ]

4 голосов
/ 29 августа 2011

Вы можете использовать следующее, чтобы сделать курсор мыши видимым (если это необходимо):

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

   base.Initialize();
}

Создайте следующие переменные, таким образом вы можете сохранить текущее и предыдущее состояние мыши:

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

Надеюсь, это вам пригодится!

0 голосов
/ 15 июля 2011

Если вы хотите имитировать реальное нажатие мыши, вы можете использовать метод SendInput Win32.

Это не так просто, как метод, уже предложенный здесь, но игра будетне сможет отличить, были ли эти клики от реальных или имитированных.

Также проверьте вопрос StackOverflow , в котором обсуждалась та же проблема.

0 голосов
/ 14 июля 2011

Просто вызовите функцию, которую вызовет вызов

Так что 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...