www.jpct.net

General => German corner => Topic started by: SteveRaphaellos on December 14, 2013, 11:25:46 pm

Title: OnTouchEvent erweiterung ... ?
Post by: SteveRaphaellos on December 14, 2013, 11:25:46 pm
Hallo Community,
was brauche ich, um ein Objekt sich solange bewegen zu lassen, wie der Finger an Position (x+-50/y+-50) ist (bei "boolean onTouchEvent(MotionEvent e)")?
Ich meine MotionEvent.ACTION_MOVE ist nicht das wirklich richtige, da ich den Finger auf dem gemalten Button immer hin und her bewegen müsste,
ich möchte aber eine Spielsteuerung in der man den Finger nur auf den Button halten muss...
Ich hab's mit 'ner while-Schleife mit der Bedinung getAction()!=MotionEvent.ACTION_UP probiert, läuft aber irgendwie falsch.^^
Die wird dann leider zur Endlosschleife ...

Danke im Vorraus :)
LG SteveRaphaellos
Title: Re: OnTouchEvent erweiterung ... ?
Post by: EgonOlsen on December 16, 2013, 11:11:12 am
Du kannst im Touch-Event-Listener keine Schleifen in dieser Art machen...damit blockierst du den Eventhread und damit die ganze Activity. Du musst doch nur eine Mischung auf up, down und move benutzen. Bei down merkst du dir die Koordinaten, bei move passt du sie entsprechend an (sofern sie denn überhautp wichtig sind) und bei down up ist der Spaß beendet. Einfach im Listener entsprechende Flags setzen.
Title: Re: OnTouchEvent erweiterung ... ?
Post by: SteveRaphaellos on December 17, 2013, 04:45:02 pm
"bei move passt du sie entsprechend an (sofern sie denn überhautp wichtig sind) und bei >>down<< ist der Spaß beendet."

Du meinst up und nicht down.^^
Ich habs auch mit nem Thread probiert, läuft einfach nicht wie ichs will.
Aber du verstehst mich glaub ich falsch, bewegen kann ich ja das Objekt, nur ich will nicht die ganze Zeit meinen Finger im Kreis bewegen müssen...
Also ich hab sowas :

@Override
   public boolean onTouchEvent(MotionEvent me) {
      float meX = me.getX();
      float meY = me.getY();
      
      if(meX >= buttonPadding && meX <= buttonPadding+buttonWidth &&
         meY <= displayHeight-buttonPadding && meY >= displayHeight-buttonPadding-buttonHeight) {
         if(me.getAction() == MotionEvent.ACTION_DOWN) {
            touchTurn = -90;    //nach links drehen
            changeMode("left");
         }
      } else if(meX >= displayWidth-buttonPadding-buttonWidth && meX <= displayWidth-buttonPadding) {
         if(meY <= displayHeight-buttonPadding && meY >= displayHeight-buttonPadding-buttonHeight) {
            if(me.getAction() == MotionEvent.ACTION_DOWN) {
               touchTurn = 90;   //nach rechts drehen
               changeMode("right");
            }
         } else if(meY >= displayHeight-buttonPadding*2-buttonHeight*2 && meY <= displayHeight-buttonPadding*2-buttonHeight) {            
            moveVar = 10;   //bewegen
         }
      }
      return super.onTouchEvent(me);
   }
Title: Re: OnTouchEvent erweiterung ... ?
Post by: EgonOlsen on December 17, 2013, 08:57:04 pm
Ja, stimmt natürlich..up...ist korrigiert. Ich denke schon, dass ich kapiert habe was du willst. Ich schaffe wohl nur nicht, das gut rüberzubringen. Also was ich meine:


In der eigentlichen Logik fragst du dann in jedem Frame "move" ab und machst entsprechend das, was du so machen willst...
Title: Re: OnTouchEvent erweiterung ... ?
Post by: SteveRaphaellos on December 19, 2013, 05:45:43 pm
Ich werd's ausprobieren und in 'nem Edit schreiben ob's geklappt hat... ;)
LG SteveRaphaellos