С#, xna, сенсорный экран wp7 не работает

Я делаю приложение wp7, и мой сенсорный экран не работает. Код, который я написал, приведен ниже

protected override void Update(GameTime gameTime)
{
    TouchCollection touches = TouchPanel.GetState();
    if (touches.Count > 0 && touches[0].State == TouchLocationState.Pressed)
    {
        SpriteFont font = Content.Load<SpriteFont>("Font");
        Point touchPoint = new Point((int)touches[0].Position.X, (int)touches[0].Position.Y);
        spriteBatch.Begin();
        spriteBatch.DrawString(font, "hello ", new Vector2(touchPoint.X, touchPoint.Y), Color.White);
        spriteBatch.End();

        while (TouchPanel.IsGestureAvailable)
        {
            GestureSample gesture = TouchPanel.ReadGesture();
            switch (gesture.GestureType)
            {
                case GestureType.Tap:
                case GestureType.DoubleTap:
                    spriteBatch.Begin();
                    spriteBatch.DrawString(font, " ", new Vector2(touchPoint.X, touchPoint.Y), Color.White);
                    spriteBatch.End();
                    break;
            }
        }
    }
    base.Update(gameTime);
}

person sohaib    schedule 02.05.2011    source источник
comment
как это не работает? бывают ли когда-нибудь касания? в каком состоянии первый? какие-то ошибки вылетают?   -  person Matt Lacey    schedule 03.05.2011


Ответы (2)


Проблема может заключаться в том, что вы пытаетесь что-то нарисовать в методе Update. Метод рисования предназначен для рисования. Итак, в вашем случае вы рисуете что-то в методе Update, а затем рисуете фон в методе Draw, поэтому вы перезаписываете свой текст.

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.CornflowerBlue);
    // overriding here
    ... draw background

    // *draw your text should be here
    base.Draw(gameTime);
}

Таким образом, решение состоит в том, чтобы переместить "spriteBatch.DrawString(...);" для рисования и поместите его ниже фона в вашем коде или добавьте параметр глубины к методам рисования.

person jan salawa    schedule 02.10.2011

Глядя на свой код, кажется, что все в порядке, но пробовали ли вы пройти через него? Я вижу, что тап или двойной тап делают одно и то же, но, возможно, что-то вешается.

Однако первое, о чем я подумал, это ваш XAML. У вас есть контроль или что-то сверх всего остального? Это может быть ловля ваших жестов.

Если ни один из них не работает, не могли бы вы опубликовать дополнительную информацию?

person Keerigan    schedule 02.05.2011
comment
Это вопрос XNA, а не Silverlight, поэтому XAML не будет. - person Matt Lacey; 03.05.2011