2016-04-11 7 views
1

Ich versuche eine App zu erstellen, in der ich, wenn ich auf ein Hintergrundtexturbild klicke, einen Punkt platziere (es ist ein Bildknopf mit einem Punktbild darauf, und nur um anzuzeigen) . Nachdem ich nun geklickt habe, wenn ich den Mauszeiger von diesem Punkt wegbewege, möchte ich, dass eine dünne Linie von diesem Punkt aus beginnt und dort endet, wo sich mein aktueller Zeiger befindet. Sobald ich das zweite Mal auf den Hintergrund klicke, wird diese Linie mit Start- und Endpunkten als erster und zweiter Punkt fixiert.Libgdx Draw Line zwischen 2 Mausklicks

Ich bin in der Lage, die Punkte zu zeichnen, aber dass ich nicht in der Lage bin, die Linie zu zeichnen:

1. Wenn ich die Maus bewege, kann ich keine Bewegungslinie vom ersten Punkt bis zum Mauszeiger zeichnen. (um mir zu helfen, meine Linie besser zu platzieren)

2. Wenn ich die Maus das zweite Mal drücke, kann ich einen Punkt, aber keine Linie erstellen.

Ich habe versucht, einen Akteur (imagebutton mit Textur aus einem Linienbild) innerhalb der mousevoved inputlistener, aber ein Akteur hat nur Ursprung x, y Punkte und Breite/Höhe. Ich bin nicht in der Lage Ende x/y-Koordinaten zu erwähnen:

actor.addListener(new InputListener() { 
      @Override 
      public boolean mouseMoved(InputEvent event, float xSecond, float ySecond) { 
      dot1.setPosition(xSecond, ySecond); //dot imagebutton actor 
      line.setPosition(xFirst, yFirst); //Line starting points(
      stage.addActor(dot1); 
      stage.addActor(line); 
      return false; 
      } 
    }); 

Ich brauche eine Hilfe zu diesem Thema, wie ich als diesen Schritt steckte. Bitte beachten Sie den Screenshot hierfür: Line between the dots 1 and 2

+0

Überprüfen Sie die ShapeRenderer-Klasse, die über verschiedene Methoden zum Zeichnen von Linien verfügt. –

Antwort

1

die ShapeRenderer Verwenden Sie Linien zwischen zwei Punkten zu zeichnen:

shapeRenderer.setProjectionMatrix(camera.combined); 
shapeRenderer.begin(ShapeType.Line); 
shapeRenderer.setColor(1, 1, 0, 1); 
shapeRenderer.line(x, y, x2, y2); 
shapeRenderer.end(); 

Wenn Sie die Stärke der Linie wählen möchten Sie die ShapeRenderer rectLine Methode verwenden:

rectLine(float x1, float y1, float x2, float y2, float width) 
Draws a line using a rotated rectangle, where with one edge is centered at x1, y1 and the opposite edge centered at x2, y2. 
+0

Ich versuche, zwischen zwei Punkten am Mauszeiger eine Linie zu zeichnen, und verwende ImageButton, Image und stage: dotimageButton = new ImageButton (skin.getDrawable ("dot")); \t \t \t \t \t \t dotimageButton.setPosition (x1, y1); \t \t \t \t \t \t stage.addAktor (dotimageButton); –

+0

so ist das einzige, was Sie tun müssen, ist camera.project .. – Hllink