Я пишу игру с 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);
, ничего не происходит. Цвет меняется только тогда, когда я устанавливаюColor (...) для каждого отдельного спрайта, прежде чем рисовать SpriteBatch Я делаю что-то неправильно здесь? Есть ли другой способ?
Каждый маленький совет приветствуется! Спасибо.
Edit: Мое решение
Как Cameron 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