DrawableGameComponent不响应我的水龙头

时间:2012-11-26 08:50:15

标签: c# windows-phone-7 xna

我已经创建了一个基本DrawableGameComponent并实施了UpdateDraw功能。我的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做些什么吗?

1 个答案:

答案 0 :(得分:1)

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

一种常见的方法是创建一个InputState类,它包装您可能拥有的不同屏幕的所有输入代码。这个模式(以及其他一些好的模式)可以在microsoft在其教育部分提供的GameState Management Sample中找到。这个样本是任何项目的一个非常好的起点,因为它负责屏幕管理,输入等。

希望有所帮助。