• Hi,
    ich bin gerade dabei ein 2D Spiel zu entwickeln. Ich will nun meinen Sprite durch Touch Events auf einem Steuerkreuz bewegen (z.B. wie beim Playstation Emulator). Wenn ein bestimmter Bereich innerhalb eines Kreises oder evtl Rechtecks gedrückt bleibt soll sich der Sprite sich mit einer entsprechenden Geschwindigkeit in Richtung x und y bewegen. Hat jmd ne Idee wie man sowas umsetzt ?
    Greetz

    Einmal editiert, zuletzt von AdrianoCelentano (5. September 2011 um 19:11)

  • ich habe schon mit der onTouch Methode rumprobiert, aber mein Problem dabei ist, dass meine Bitmap sich nicht durchgehend bewegt sondern nur für jeden Touch einzeln (ich hoffe es ist verständlich was ich meine). mit Profit meinst du was ich erreichen will ? Ich hab mir das so vorgestellt, dass ich auf meinem Steuerkreuz für jede Richtung ein Rectangle habe und wenn ein Rectangle gedrückt wird, werden die Koordinaten der Bitmap solange in die jeweilige Richtung erhöht bis man den Finger wieder herunternimmt. Mein Problem ist dabei das die Koordinaten nur beim ersten Druck erhöht werden und nicht die gesamte Zeit während des Drückens.

    Einmal editiert, zuletzt von AdrianoCelentano (5. September 2011 um 23:04)

  • Tschuldigung, konnte mir das nicht verkneifen, das is ne blöde Meme (bin wohl nen Kellerkind 8) )
    In dem Fall musst du für den Zeitraum zwischen dem EVENT_DOWN und EVENT_UP deine Action durchführen. Am besten definierst du dir ne Art Status Variable, die angibt, was du in deiner Hauptschleife tun musst. Das wäre am besten nen enum (oder nen int) mit den Stati:
    - nix tun
    - nach links scrollen
    - nach rechts scrollen
    - hoch scrollen
    - runter scrollen

    Ohne Meme sähe das wohl so aus:

    OnTouch abfangen
    - falls EVENT_DOWN: Koordinaten checken, Variable für entsprechenden State setzen (moveUp, moveDown, moveLeft, moveRight...was immer das Teil macht)
    - falls EVENT_UP: aktuellen State aufheben
    - falls EVENT_MOVE: Koordinaten neu checken, evtl. State aufheben oder ändern

    In der Hauptschleife:
    - State abfragen und entsprechend das Spiel ändern

    Gruß
    Thorsten

  • ja so hat ichs eigentlich auch gemacht, es wird auch immer so lange ich auf einen Teil des Steuerkreuzes drücke dieser mit dem roten Rechteck übermalt und wenn ich loslasse ist es weg. gleichzeitig rufe ich eine ganz einfache Methode für meinen Sprite auf der seine Koordinaten während des drückens erhöht. Allerdings bewegt er sich total ungleichmäßig und hört irgendwann auf, aber das rechteck wird noch angezigt...

    2 Mal editiert, zuletzt von AdrianoCelentano (6. September 2011 um 12:53)

  • ok Fehler gefunden, hab gedacht onTouch läuft bei return true auch wie ne schleife und ich hab meine Bewegungsfunktion dort ausgeführt, jetzt hab ich sie wie du gesagt hast in der Hauptschleife und es läuft flüssig :) Thx, bist ja doch ganz schön sozial für en Kellerkind ;)

  • ist es eigentlich auch möglich zu bestimmen wie fest jmd drückt, is glaub ziemlicher quatch (?) glaub da sollt ich wohl eher Richtung Stick gehn bei dem am Rand größere Geschwindigkeiten abgefragt werden

  • Thx, bist ja doch ganz schön sozial für en Kellerkind ;)


    hehe, offensichtlich ;)

    also in der API gibts die Funktionen getPressure() und getSize() bei nem MotionEvent (je fester der Druck, desto größer die Oberfläche vom Finger, die anliegt). Allerdings weiß ich nicht, ob alle Telefone das unterstützen und wie fein das abgestuft ist.

    Gruß
    Thorsten

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!