我在XNA游戏中检索触摸输入时遇到问题。这是我的开始代码:
TouchCollection touchPositions;
List<Vector2> touchReleases = new List<Vector2>();
然后这是我的更新代码:
protected override void Update(GameTime gameTime)
{
// Other update logic here
touchReleases.Clear();
foreach (TouchLocation tl in touchPositions)
{
if (tl.State == TouchLocationState.Released)
touchReleases.Add(tl.Position);
}
base.Update(gameTime);
}
我们的想法是将所有版本加载到Vector2
列表中。然后(在绘制代码期间)函数检查释放以执行操作。
编辑:我在Guide.BeginShowMessageBox()
循环期间使用foreach
对此进行了测试。每次我发布时都会弹出。
bool released = false;
foreach (TouchLocation tl in touchPositions)
{
// checks to see if the button is being hovered on
}
foreach (Vector2 tr in touchReleases)
{
if (PointInArea(tr, new Rectangle((int)position.X, (int)position.Y, buttonimage[0].Width, buttonimage[0].Height)))
{
released = true;
break;
}
}
return released;
PointInArea
功能会检查Vector2
是否在Rectangle
中。我知道这个功能正常。
有趣的是按钮响应每4次点击一次的发布。有谁知道这是为什么?