在XNA中每次单击鼠标/按键增加一次

时间:2010-03-07 03:51:29

标签: c# mouse xna

这一直困扰着我 - 当我使用下面的代码来增加每次鼠标点击的选择时: if (m.LeftButton == ButtonState.Pressed) currentSelection++; 然后currentSelection增加了一吨,因为这个代码在我的Update()函数中并且按照设计运行每一帧,因此增加了currentSelection。您几乎没有机会快速点击和释放,以防止currentSelection增加多个。

现在我的问题是我应该怎么做才能这样做每次我单击鼠标一次,它只会增加currentSelection一次,直到我再次点击下来。

2 个答案:

答案 0 :(得分:6)

您需要比较当前鼠标状态和上次更新的鼠标状态。

在你的课堂上,你会宣布MouseState mouseStateCurrent, mouseStatePrevious;,所以它会像:

mouseStateCurrent = Mouse.GetState();

if (mouseStateCurrent.LeftButton == ButtonState.Pressed &&
    mouseStatePrevious.LeftButton == ButtonState.Released)
{
    currentSelection++;
}

mouseStatePrevious = mouseStateCurrent;

因此,它会检测到您之前按下它,然后释放它 - 只有这样才会被视为点击,它会添加到currentSelection

答案 1 :(得分:2)

我相信你会喜欢这个。

How to slow down or stop key presses in XNA