我有两节课。屏幕和按钮。
我游戏的所有不同屏幕都继承了 Screen 类。
然后将按钮添加到屏幕类并在屏幕的更新函数中更新(按钮的更新函数)。
这是我的 Button 更新的代码。
foreach (TouchLocation touch in TouchPanel.GetState())
{
if (touch.State == TouchLocationState.Pressed)
{
Point point = new Point((int)touch.Position.X, (int)touch.Position.Y);
if (rectangle.Contains(point))
{
pressed = true;
color = Color.Red;
}
else
{
pressed = false;
color = Color.White;
}
break;
}
}
现在问题来了。
如果我保留这条线 if (touch.State == TouchLocationState.Pressed) 则只能单击第一个按钮。我还尝试使用 TryGetPreviousLocation() 导致无法单击任何按钮。
如果我删除上面提到的 if 语句,那么代码适用于所有按钮,但在屏幕转换期间会发生多次按钮按下。
我想说的是这个。假设我有两个屏幕 A 和 B。屏幕 A 和 B 在完全相同的位置分别有两个按钮 P 和 Q。在第二种情况下,如果按下 P 按钮,则屏幕转换到 B,并且在没有抬起手指的情况下也按下按钮 Q。
这发生得非常快,因此无法控制。我想知道即使在屏幕转换期间我能做些什么来只允许按一次。如果不抬起手指并再次触摸屏幕,玩家应该无法按下下一个屏幕上的按钮。
如前所述。我正在调用当前屏幕更新方法中所有按钮的更新方法。