首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AndEngine SpriteBatch setColor()不工作

AndEngine SpriteBatch setColor()不工作
EN

Stack Overflow用户
提问于 2013-02-25 11:50:23
回答 1查看 980关注 0票数 1

我正在用AndEngine写一个游戏,在那里我把几十个精灵放到一个SpriteBatch里。这需要做,否则的帧速率会大幅下降,当我画每一个雪碧在它自己。我的问题是,如何更改整个SpriteBatch的颜色?

我就是这样创建SpriteBatch的

代码语言:javascript
复制
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);时,什么都不会发生。只有当i setColor(.)时,颜色才会改变对每一个精灵来说,在画SpriteBatch之前,我是不是做错了什么?还有别的办法吗?

每一个小小的暗示都是值得感激的!谢谢。

编辑:我的解决方案

正如卡梅隆·弗雷德曼所建议的(再次感谢!)我首先尝试直接扩展SpriteBatch class并实现setColor()方法。但是我不知道怎么做,所以我选择了快速而肮脏的变体:

代码语言:javascript
复制
 // 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类时,我会非常感兴趣!)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-25 17:07:42

尽管SpriteBatch有一个setColor(),但这实际上只是它扩展形状的一个工件。有两种可能的解决办法:

(1)为每个精灵分别着色.

代码语言:javascript
复制
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) {
        sprite.setColor(.5f, .5f, .5f);
        spriteBatch.draw(sprite);
}
spriteBatch.submit();       

(2)在AndEngine中修改SpriteBatch

如果您真的不想给每个sprite着色,那么修改AndEngine中的AndEngine类并添加一个覆盖setColor()的方法如何?向sprite批处理中添加一个颜色字段,让setcolor调整该字段,然后在绘图方法中,让sprite批处理将它要绘制的sprite的颜色设置到其存储的颜色字段中。

如果您在AndEngine中干净地实现了它,您甚至可以将它作为对源的可能更改提交。(它是开源的。(参与其中很有趣。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15066317

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档