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