在libgdx中绘制直线的简单方法? - java

我想在libgdx中为屏幕点之间的Android游戏绘制一条直线。

目前,我有以下代码使用ShapeRenderer来绘制非虚线:

shapeRenderer.begin(ShapeType.Line);
//draws normal line, would prefer it dotted...............
shapeRenderer.line(touchPos.x, touchPos.y, someSprite.getX(), someSprite().getY());
shapeRenderer.end();

我看过another question about dotted lines,但是对我来说有点过头了,因为我不需要它弯曲了。我只需要直线虚线即可,例如

................................................... ...................................................

是否在考虑使用一个循环来计算直线上点的位置并在那里绘制点?但这真的有必要吗,有人知道更简单的方法吗?

参考方案

当前,我正在使用此方法绘制虚线:

/**
 * Draws a dotted line between to points (x1,y1) and (x2,y2).
 * @param shapeRenderer
 * @param dotDist (distance between dots)
 * @param x1
 * @param y1
 * @param x2
 * @param y2
 */
private void drawDottedLine(ShapeRenderer shapeRenderer, int dotDist, float x1, float y1, float x2, float y2) {
    shapeRenderer.begin(ShapeType.Point);

    Vector2 vec2 = new Vector2(x2, y2).sub(new Vector2(x1, y1));
    float length = vec2.len();
    for(int i = 0; i < length; i += dotDist) {
        vec2.clamp(length - i, length - i);
        shapeRenderer.point(x1 + vec2.x, y1 + vec2.y, 0);
    }

    shapeRenderer.end();
}

因此,基本上我计算了要绘制的线的向量,并根据所需的点距遍历该线以绘制点。在我的测试中,距离10很不错:

 drawDottedLine(shapeRenderer, 10, x1, y1, x2, y2);

这对我来说相当顺利。如果您有更好的绘制虚线的方法,请告诉我。

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …

Java:我可以在Hashmaps中使用数组吗? - java

我可以在Hashmaps中使用数组吗?如果是这样,则声明这种哈希图的确切语法是什么?谢谢 参考方案 数组也是对象。甚至像int[]这样的原始数组。Map<String,String[]> map = new HashMap<String,String[]>();

JAVA:字节码和二进制有什么区别? - java

java字节代码(已编译的语言,也称为目标代码)与机器代码(当前计算机的本机代码)之间有什么区别?我读过一些书,他们将字节码称为二进制指令,但我不知道为什么。 参考方案 字节码是独立于平台的,在Windows中运行的编译器编译的字节码仍将在linux / unix / mac中运行。机器代码是特定于平台的,如果在Windows x86中编译,则它将仅在Win…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…