none
Touchstate problem RRS feed

  • Frage

  • ich habe die Folgene Methode

    public static bool fired;        
    
            public static bool FireButtonTouch(this TouchCollection touchState)
            {
    
                foreach (TouchLocation location in touchState)
                {
                    // Right side of the screen
                    if (((location.Position.X > 400) && (location.Position.Y > 0)) &&
                        ((location.Position.X < 800) && (location.Position.Y < 480)) &&
                        (location.State == TouchLocationState.Pressed))
                    {                   
                        return fired = true;
                    }
                }
                return fired = false;
            }

    diese reagiert kurz gesagt wenn die rechte seite des Bildschirms (landscape)  berühert wird.

    Das problem ist ich bin darauf angewiesen, dass ich nach TouchLocationState.Pressed frage und nicht nach TouchLocationState.moved.

    Nun reagiert aber das Spiel immer nur auf moved, bzw das ergebnis ist iommer ein zustand moved. WIe kann ich das verhindern ?

    Montag, 5. März 2012 16:27

Antworten

  • Schau Dir mal http://forums.create.msdn.com/forums/t/72630.aspx an, dort wird das Problem recht gut erklärt.


    http://patrickgetzmann.wordpress.com/

    Sonntag, 11. März 2012 16:05

  • You would never see a state of Pressed because when you call GetState() the second time we move any touches in the Pressed state to the Moved state.

    Du rufst vermutlich zweimal GetState auf...

    Arbeitest du nur direkt mit dem Input mit TouchCollection oder auch mit den States? (Tap, DoubleTap, Pinch etc)...

    QuickFix:

    public static bool pressed= false; public static bool FireButtonTouch(this TouchCollection touchState) { foreach (TouchLocation location in touchState) { // Right side of the screen if (((location.Position.X > 400) && (location.Position.Y > 0)) && ((location.Position.X < 800) && (location.Position.Y < 480)) && (location.State == TouchLocationState.Moved)&& !pressed) { pressed = true;

    return fired = true; }

    if(location.State == TouchLocationState.Released){

    pressed = false;

    }

    } return fired = false; }

    Sonntag, 11. März 2012 21:16

Alle Antworten