2013-12-09 27 views
3

我是一位与libgdx引擎一起工作的新程序员,并且对精灵批处理的行为感到疑惑。特别是如何在程序生命周期中向批处理添加精灵。到目前为止,所有精灵的例子都使用了一些类似的代码: batch.begin(); sprite.draw(batch); batch.end(); 等等,而且我不清楚自己如何绘制不同数量的精灵,因为每个精灵都必须在批处理中调用。谢谢提前解释!LibGDX Sprite批处理并在运行时添加新的精灵

+0

看看舞台演员系统。它已经实现了一个“舞台”,您可以添加所有演员。通过一个简单的抽象舞台,它吸引了每个演员的当前位置和当前状态。你可以看看它的代码来理解系统。也可以看看gameloop概念。 – BennX

+1

伟大的建议头脑=吹了benn! – TypingTurtle

回答

2

简而言之,将每次调用sprite.draw()想象为在某个点绘制精灵的请求。每次调用sprite.draw()都会将该精灵添加到批处理中。当调用batch.end()时,所有添加到该批处理的精灵将被绘制并且该批处理将被清空。由于该批次的内容不是持久的(即在调用batch.end()时清空),因此每次使用它时都必须添加精灵和图像。

在以下示例中,要绘制的所有精灵都存储在精灵集合中,并且每次绘制时都将其添加到该批处理中,如果从一个render( )方法。

batch.begin(); 
for (sprite : sprites) { 
    sprite.draw(batch); 
} 
batch.end() 

现实的情况是更复杂一点,因为精灵批量已满时,下了几个情况会刷新,但一个好的经验法则是添加你要画上的每个一切,每一帧。

+0

这正是我所寻找的感谢你的解释 – TypingTurtle