我已经创建了一个基本DrawableGameComponent
并实施了Update
和Draw
功能。我的Update方法如下所示:
public override void Update(GameTime gameTime)
{
if (this.state != ComponentState.Hidden)
{
if (this.state == ComponentState.Visible)
{
while (TouchPanel.IsGestureAvailable)
{
GestureSample gesture = TouchPanel.ReadGesture();
if (gesture.GestureType == GestureType.Tap)
{
Point tapLocation = new Point((int)gesture.Position.X, (int)gesture.Position.Y);
// TODO: handle input here!
this.state = ComponentState.Hidden; // test
}
}
}
}
base.Update(gameTime);
}
我在构造函数中启用了以下手势:
TouchPanel.EnabledGestures = GestureType.Tap | GestureType.VerticalDrag;
这里的问题是,当我检查Tap时,它对if测试没有反应。我需要对DrawableGameComponent做些什么吗?
答案 0 :(得分:1)
您的手势似乎正在读取代码中的其他位置,并且当您提供的代码检查TouchPanel.IsGestureAvailable
时,它是错误的,因为它们都已被读取。
一种常见的方法是创建一个InputState类,它包装您可能拥有的不同屏幕的所有输入代码。这个模式(以及其他一些好的模式)可以在microsoft在其教育部分提供的GameState Management Sample中找到。这个样本是任何项目的一个非常好的起点,因为它负责屏幕管理,输入等。
希望有所帮助。