簡體   English   中英

XNA spriteBatch.Draw-閃爍的精靈

[英]XNA spriteBatch.Draw - flickering sprites

我正在XNA中編寫精靈動畫。 我使用spriteBatch.Draw方法來做到這一點:

spriteBatch.Draw(waterTexture, waterPosition, rectWater, Color.White * 1.0f, 0f, Vector2.Zero, 1.0f, SpriteEffects.None, 1.0f);
// 'rectWater' is rect used to cut sprite image from sprite texture

問題是它可以工作,但是在動畫快要結束時它會閃爍一次並繼續動畫。 會是什么呢?

好的,我找出了問題所在。

問題是,我用錯誤的算法來更改框架,有時它會跳到空白框架。 看一下代碼:

Rectangle rectWater = new Rectangle(((currentFrame % numerOfWaterSpriteFrames) % horizontalNumerOfWaterSpriteFrames) * (int)sizeOfWaterFrame.X, ((aktualnaFramka % numerOfWaterSpriteFrames) / horizontalNumerOfWaterSpriteFrames) * (int)sizeOfWaterFrame.Y, (int)sizeOfWaterFrame.X, (int)sizeOfWaterFrame.Y);
//The correct code

我沒有在第一個和第二個Rectangle構造函數參數中通過numerOfWaterSpriteFrames調制 currentFrame 像這樣:

Rectangle rectWater = new Rectangle((currentFrame % horizontalNumerOfWaterSpriteFrames) * (int)sizeOfWaterFrame.X, (aktualnaFramka / horizontalNumerOfWaterSpriteFrames) * (int)sizeOfWaterFrame.Y, (int)sizeOfWaterFrame.X, (int)sizeOfWaterFrame.Y);
//The wrong code

沒關系

在沒有看到動畫精靈的代碼的情況下,我真的幫不上什么忙,但是每次在動畫的同一點眨一下,對我來說都是一個愚蠢的畫面。 可能正在發生的是,您最后繪制了一個空白幀。 造成這種情況的可能原因是直接的一對一錯誤。 如果您使用循環遍歷動畫的幀,則索引可能會加一(例如,使用>=而不是> ),這意味着您要繪制一個不應包含在其中的額外幀那里。 您得到的是空白幀而不是崩潰的事實表明,無論是通過動畫算法的結構還是通過運氣,多余的幀都在Spritesheet中。

不過,我需要查看動畫代碼以確保發生了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM