java – 试图在LibGDX中绘制一个圆圈

这是非常基本的,但我无法弄清楚出了什么问题.基本上我是想在我的一个物体的某个区域周围绘制一个圆圈.我在构造函数中初始化了一个ShapeRenderer(名为srDebugCircle),并在render()方法中使用for循环来绘制每个对象.

for (GameObject object : levels.get(LEVEL_INDEX)) {
        if (object.getType() == ObjectType.SWINGING_SPIKES) {
            object.draw(batch);
            srDebugCircle.begin(ShapeType.Filled);
            srDebugCircle.circle(object.getxPos() + object.getWidth()/2,object.getyPos(),object.getWidth()/2);
            srDebugCircle.setColor(Color.BLACK);
            srDebugCircle.end();
        }

        if (object.getType() == ObjectType.COIN && (Coin) object).isVisible()) {
            object.draw();
        }
        ...
}

问题是当我添加圆圈的代码时,我只看到15个对象中的4个.当我删除/评论它时,它照常工作 – 但是,在这两种情况下,我永远不会看到一个黑色的圆圈.

我特别谈到这部分:

srDebugCircle.begin(ShapeType.Filled);
            srDebugCircle.circle(object.getxPos() + object.getWidth()/2,object.getWidth()/2);
            srDebugCircle.setColor(Color.BLACK);
            srDebugCircle.end();

谁能明白为什么我有这个问题?

解决方法

Springrbua答案的另一种选择是使用pixmaps而不是ShapeRenderer绘制.在SpriteBatch和ShaperRenderer之间切换是一项昂贵的操作,pixmaps不需要结束SpriteBatch. pixmap提供的绘制方法比ShapeRenderer少,但它确实包括绘制一个实心圆.

pixmap pixmap = new pixmap(width,height,pixmap.Format.RGBA8888);
pixmap.setColor(Color.BLACK);
pixmap.fillCircle(x,y,r);
Texture texture = new Texture(pixmap);

// render
batch.begin();
batch.draw(texture,x,y);
batch.end();

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...