我在寫一個遊戲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