Drucken

Fling-Events


Smartphones und Tables werden oft mit einer "Wischbewegung" bedient, bei der man schnell mit einem Finger über den Bildschirm streicht. Die Reaktion des Systems hängt von der Richtung und der Geschwindigkeit der Bewegung ab. In JTurtleLib werden solche Aktionen mit der Methode playgroundFlung() implementiert. Diese gibt die x- und y-Koordinate des Startpunktes, x- und Y-Koordinate des Endpunktes, die Geschwindigkeit und die Richtung des Fingerbewegung zurück.

Im folgenden Beispiel wird mit jeder Wischbewegung eine neue Schildkröte gestartet. Diese bewegt sich je nach Geschwindigkeit der Fingerbewegung langsam oder schnell, dreht zufällig nach links oder rechts und zeichnet eine Klothoidenkurve.

 

Source mit Online-Compiler bearbeiten

App installieren auf Smartphone oder Tablet

QR-Code

Sources downloaden (Tu28.zip)

// Tu28.java

package app.tu28;

import turtle.*;

public class Tu28 extends Playground
{
  public void playgroundFlung(double xStart, double yStart, 
    double xEnd, double yEnd, double v, double dir)
  {
     Turtle = new Turtle(xEnd, yEnd, RED);
     t.setSpeed(MAXSPEED);
     t.setHeading(dir);
     t.setSpeed((int)(v / 100));
     cloth(t, 10, (Math.random() < 0.5)? true : false);
  }
  
  void cloth(Turtle t, int s, boolean isLeft)
  {
    if (s > 600)
      return;
    t.fd(5);
    if (isLeft)
      t.lt(0.025 * s);
    else
      t.rt(0.025 * s);
    cloth(t, s + 5, isLeft);
  }  
}

Erklärungen zum Programmcode:

Turtle t = new Turtle(xEnd, yEnd, RED)

Die Turtle wird im Endpunkt der Fingerbewegung erzeugt

t.setHeading(dir)

Die Turtle bewegt sich in der Richtung der Fingerbewegung

t.setSpeed((int)(v / 100))

Turtle-Geschwindigkeit ist proportional zu der Geschwindigkeit, mit der sich der Finger bewegt

cloth(t, 10, (Math.random() < 0.5)? true : false) mit der Wahscheinlichkeit 0.5 wird eine links- oder rechts gewickelte Kurve gezeichnet