如何在Libgdx中绘制一系列连接线?

时间:2016-10-22 08:58:48

标签: java libgdx

我在形状渲染器上使用多边形,问题是用户应该能够随时添加顶点,基本上顶点不是由我设置的,而是由用户设置的。我所做的是每当用户添加一个点时,我将它们添加到arrayList。

sklearn.mixture.GaussianMixture

当我尝试在shapeRenderer

上渲染多边形时,我遇到了这个问题
ArrayList<Float> v = new ArrayList<Float>();
public void ontouch(screenX, screenY){
      v.add(screenX);
      v.add(screenY)
}

但我只是得到错误。

我正在努力实现这样的目标,如果你知道一种不同的方式,那么这将是非常有帮助的。顺便说一句,我也使用box2d,这不需要碰撞,只是为了用户的视觉效果。enter image description here

1 个答案:

答案 0 :(得分:1)

我个人这样做的方法是使用LinkedListVector2个对象。 Vector2个对象存储两个浮点数,因此对于每次单击,您都会获得x和y坐标并创建一个新的Vector2对象。通过将它们存储在LinkedList中,您可以随时以正确的顺序检索点,以便您可以连接一条线。

LinkedList<Vector2> v = new LinkedList<Vector2>();
public void ontouch(screenX, screenY){
      v.add(new Vector2(screenX, screenY)); // add Vector2 into LinkedList
}

您想如何绘制线条或连接点取决于您。

另一个原因是只保留最近点击的两个点,然后抛弃其他点。这意味着存储线而不是点。如果这些行是对象,那么你可以这样做:

Vector2 previousPoint;
Vector2 currentPoint;
ArrayList<MyLineClass> lines = new ArrayList<MyLineClass>();
public void ontouch(screenX, screenY){
      if(previousPoint == null){
          previousPoint = new Vector2(screenX, screenY);
      }else{
          previousPoint = currentPoint;
          currentPoint = new Vector2(screenX, screenY);
          lines.add(new MyLineClass(currentPoint, previousPoint)
      }
}

我从袖口写下了这个,但我相信这个例子应该有用。

编辑:

好东西LibGDX是开源的。如果要使用浮点数数组,则该方法只是以交替顺序获取x和y坐标。所以对于每个索引:

0 = x1

1 = y1

2 = x2

3 = y2

4 = x3

5 = y3

这是一种奇怪的方法,但我认为它有效。