1

我已经创建了一个基本的DrawableGameComponent和实现UpdateDraw功能。我的更新方法如下所示:

        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 做些什么吗?

4

1 回答 1

1

似乎您的手势正在代码中的其他位置被读取,并且当您提供的代码检查TouchPanel.IsGestureAvailable它是否为假时,因为它们都已被读取。

解决此问题的常用方法是创建一个 InputState 类,该类为您可能拥有的不同屏幕包装所有输入代码。这种模式(以及其他一些好的模式)可以在Microsoft 在其教育部分提供的GameState 管理示例中找到。这个示例对于任何项目来说都是一个非常好的起点,因为它负责屏幕管理、输入等。

希望有帮助。

于 2012-11-26T09:57:31.687 回答