2016-04-11 5 views
1

Я пытаюсь создать приложение, в котором, когда я нажимаю на фоновое изображение текстуры, я помещаю точку (это изображение с точечным изображением на нем и только для diplay) , Теперь после нажатия, когда я перемещаю указатель мыши от этой точки, я хочу, чтобы тонкая линия начиналась с этой точки и заканчивалась там, где находится мой текущий указатель. Как только я нажимаю второй раз на фоне, эта линия фиксируется с начальной и конечной точками в качестве первой и второй точек.Libgdx Draw Line между двумя щелчками мыши

Я могу рисовать точки, но я не могу нарисовать линию:

1. когда я перемещаю мышь, я не могу нарисовать движущуюся линию, исходящую от первой точки, до указателя мыши. (чтобы помочь мне лучше разместить мою линию)

2. когда я нажимаю кнопку мыши второй раз, я могу создать точку, но не линию.

Я попытался создать актер (изображение, имеющее текстуру, сделанную из линейного изображения) внутри mousemoved inputlistener, но у актера появились только точки x, y и ширина/высота. Я не могу упомянуть окончание х/у координаты:

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; 
      } 
    }); 

мне нужна помощь по этому вопросу, как я застрял в этом шаге. Пожалуйста, обратитесь к скриншоту для этого: Line between the dots 1 and 2

+0

Проверьте класс ShapeRenderer, который имеет различные методы рисования линий. –

ответ

1

Используйте ShapeRenderer рисовать линии между 2 точками:

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

Если вы хотите, чтобы выбрать толщину линии, которую вы могли бы использовать метод ShapeRenderer rectLine:

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

Я пытаюсь нарисовать линию между двумя точками на курсоре мыши, и я использую ImageButton, Image и stage: dotimageButton = new ImageButton (skin.getDrawable («точка»)); \t \t \t \t \t \t dotimageButton.setPosition (x1, y1); \t \t \t \t \t \t stage.addActor (dotimageButton); –

+0

, так что единственное, что вам нужно сделать, это использовать camera.project .. – Hllink

Смежные вопросы