【问题标题】:Libgdx Draw Line between 2 mouse clicksLibgdx 在两次鼠标点击之间画线
【发布时间】:2016-04-11 10:06:58
【问题描述】:

我正在尝试创建一个应用程序,当我单击背景纹理图像时,我会在其中放置一个点(它是一个带有点图像的图像按钮,仅用于显示)。现在单击后,当我将鼠标指针移离该点时,我希望一条细线从该点开始并在我当前指针所在的位置结束。当我第二次点击背景时,这条线就会固定,起点和终点分别是第一个和第二个点。

我可以画点,但我不能画线:

1 .当我移动鼠标时,我无法绘制从第一个点到鼠标指针的移动线。 (帮助我更好地放置线路)

2 。当我第二次按下鼠标时,我可以创建一个点,但不能创建一条线。

我尝试在鼠标移动的输入侦听器中创建一个演员(具有由线条图像制成的纹理的图像按钮),但一个演员只有原始 x、y 点和宽度/高度。我无法提及结束 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

【问题讨论】:

  • 查看 ShapeRenderer 类,它有多种绘制线条的方法。

标签: java libgdx mouseevent scene2d


【解决方案1】:

使用 ShapeRenderer 在两点之间画线:

 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.

【讨论】:

  • 我正在尝试在鼠标光标上的两点之间画线,我正在使用 ImageButton,Image 和 stage: dotimageButton = new ImageButton(skin.getDrawable("dot")); dotimageButton.setPosition(x1, y1); stage.addActor(dotimageButton);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 2021-04-29
  • 2015-03-12
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
相关资源
最近更新 更多