1

基本的な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で何かする必要がありますか?

4

1 に答える 1

1

あなたのジェスチャーは、コード内の他の場所で読み取られているようであり、提供されたコードがそれをチェックするとき、TouchPanel.IsGestureAvailableそれらはすべて読み取られているため、falseです。

これを回避する一般的な方法は、さまざまな画面のすべての入力コードをラップするInputStateクラスを作成することです。このパターン(および他のいくつかの優れたパターン)は、マイクロソフトが教育セクションで提供しているGameStateManagementサンプルにあります。このサンプルは、画面管理や入力などを処理するため、どのプロジェクトにとっても非常に良い出発点です。

お役に立てば幸いです。

于 2012-11-26T09:57:31.687 に答える