1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Seltsames Dualtouch Verhalten?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von seejay, 19.07.2010.

  1. seejay, 19.07.2010 #1
    seejay

    seejay Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    0
    Registriert seit:
    05.05.2010
    Hallo,

    ich bin gerade dabei meine erste Android App zu schreiben. Ein Pong Klon ;)

    Leider habe ich folgendes Problem:

    Spieler Links (SL) bewegt seinen Schläger nach oben. Spieler Rechts (SR) bewegt seinen nach unten. Funktioniert noch.
    SL bewegt seinen Schläger auch nach unten. Funktioniert weiter
    SL bewegt seinen Schläger wieder nach oben -> Fehler SL bewegt SR's Schläger und umgekehrt und bleibt auch wenn beide sich weiter bewegen. Solange bis ein Spieler seinen Finger vom Display nimmt.

    Zum Bewegen der Schläger prüfe ich ab, ob der Bildschirm auf der linken Seite über oder unter dem Schläger berührt wird und bewege dann SL's Schläger. Bei der rechten Seite dann eben SR's Schläger.

    Die Geschwindigkeit der Bewegung wird in einer anderen Methode immer wieder auf 0 gesetzt. Da es ja keinen OnTouchEnds Listener gibt.

    Hier noch der Code:
    Code:
        public boolean onTouch(View arg0, MotionEvent arg1) {
            int i = 0;
            while (i < arg1.getPointerCount())
            {
                if ( arg1.getX(i) < Board.Width / 2+Pong.abstandLinks)
                {
                    Paddle paddle = Pong.player1.getPaddle();
                    //Links wurde gehalten
                    if (arg1.getY(i) < paddle.getY()+paddle.getHeight()/2)
                    {
                        paddle.setYMove(-1);
                    }
                    else
                    {
                        paddle.setYMove(1);
                    }
                }
                else if ( arg1.getX(i) > Board.Width / 2+Pong.abstandLinks)
                {
                    Paddle paddle = Pong.player2.getPaddle();
                    //Links wurde gehalten
                    if (arg1.getY(i) < paddle.getY()+paddle.getHeight()/2)
                    {
                        paddle.setYMove(-1);
                    }
                    else
                    {
                        paddle.setYMove(1);
                    }
                }
                i++;
            }
            return true;
        }
    
    Kann mir jemand sagen woran das Problem liegen könnte?

    Danke und Gruß
    seejay
     
  2. the_alien, 19.07.2010 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Ja, das liegt an der "Multitouch" Hardware von HTC. Die kann das leider nicht anständig trennen und du wirst auch keinen Workaround dafür kriegen können :/
     
  3. seejay, 19.07.2010 #3
    seejay

    seejay Threadstarter Junior Mitglied

    Beiträge:
    26
    Erhaltene Danke:
    0
    Registriert seit:
    05.05.2010
    des kann doch net sein?... So ein Handy muss doch die Koordinaten richtig zuordnen können. Es vertauscht irgendwie ab einem bestimmten Punkt die beiden X oder Y Koordinaten. Also aus X1/Y1 und X2/Y2 wird dann plötzlich X1/Y2 und X2/Y1...
    Workaround gibt es auch nicht... Also gibt es auch keine 2 Spieler Games in denen beide immer den Finger am Display haben müssen...
     
  4. the_alien, 19.07.2010 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Das wird nur auf dem Milestone gehen. Die Hardware kann es. Alle HTC Geräte können es nicht. Sorry.
    Du kannst dir den MTVisualizer ausm Market laden. Der zeigt dir nur die Koordinaten graphisch an. Und das Ergebnis ist das gleiche. Das existiert auch schon seit dem G1 und es ist nie besser geworden.
     
  5. Markus, 20.07.2010 #5
    Markus

    Markus Gewerbliches Mitglied

    Beiträge:
    76
    Erhaltene Danke:
    8
    Registriert seit:
    19.01.2009
    Ich kann the_alien nur zustimmen. Die meisten HTC Geräte können nur das umschließende Rechteck zwischen zwei Fingern bestimmen, was für Pinch & Zoom Gesten reicht. Das HTC 4G EVO ist hier übrigens die erste positive Ausnahme. Auch das Samsung Galaxy S kann Multi-Touch, sogar mit vier Fingern.

    Ich hatte übrigens dieselbe Pong Idee vor ein paar Monaten umgesetzt:
    greenrobot Pong Multi Touch
     

Diese Seite empfehlen