我在写一个游戏AndEngine在那里我把几十个精灵放进一个SpriteBatch。这需要完成,否则当我自己绘制每个精灵时,帧频会急剧下降。 我的问题是,我该如何改变整个SpriteBatch的颜色?AndEngine SpriteBatch setColor()不起作用
这是我如何创建SpriteBatch:
ArrayList<Sprite> dozenSprites; // these are all the sprites of one SpriteBatch in a list
SpriteBatch spriteBatch = new SpriteBatch(spriteBatchTextureAtlas, dozenSprites.size(),vertexBufferObjectManager);
for (Sprite sprite : dozenSprites) {
spriteBatch.draw(sprite);
}
spriteBatch.submit();
那么有什么特别的地方。当一切准备就绪时,我会将SpriteBatch附加到我的场景中,并且它会按照预期显示。但是,当我拨打spriteBatch.setColor(0.5f,0.5f,0.5f);
时,什么也没有发生。当我在绘制SpriteBatch之前,我将SetColor(...)设置为每个单独的精灵时,颜色只会改变。我在这里做错了什么?有另一种方法吗?
每一个小小的提示是赞赏!谢谢。
编辑:我的解决方案
作为卡梅伦Fredmans建议(再次感谢!)我第一次尝试到SpriteBatch class
直接延伸并实现setColor()
方法。但我无法弄清楚如何,所以我选择了快速和肮脏的变种:
// initialize the SpriteBatch as above
// and to change the color call:
spriteBatch.reset();
for (Sprite sprite : dozenSprites) {
sprite.setColor(theNewColor);
spriteBatch.draw(sprite);
}
spriteBatch.submit();
使用spriteBatch带来这么多的性能,即保留所有的原始精灵的ArrayList和每一次重新初始化批对我来说还是够快的。但是,当有人成功扩展SpriteBatch类时,我当然会非常感兴趣! :)
谢谢!我将尝试找出如何修改spritebatch,使其具有颜色字段。如果我不能,我可能不得不使用(1)..但至少我知道我现在站在哪里,谢谢。 – GameDroids 2013-02-25 20:12:14