2
我想動畫中包含延遲的文本字符串的不透明度值,包含級別的名稱。在XNA中動畫不透明度隨着時間的推移
所以事件的順序是這樣的:
- 開始透明
- 淡入白色固體在遊戲時間的第二
- 等待第二個
- 淡出透明一遍又一遍一秒。
我編寫的用於爲alpha值設置動畫的代碼不起作用。另外,這非常難看,我確信有更好的方法來使用XNA框架來完成它。
我一直無法找到任何其他建議這樣做。這樣的動畫價值觀並不罕見。我該怎麼做?
這是我的當前代碼(是的,這太可怕了)。
private int fadeStringDirection = +1;
private int fadeStringDuration = 1000;
private float stringAlpha = 0;
private int stringRef = 0;
private int stringPhase = 1;
...
if (!pause)
{
totalMillisecondsElapsed += gameTime.ElapsedGameTime.Milliseconds;
if (fadestringDirection != 0)
{
stringAlpha = ((float)(totalMillisecondsElapsed - stringRef)/(float)(fadeStringDuration*stringPhase)) * fadeStringDirection;
stringAlpha = MathHelper.Clamp(stringAlpha, 0, 1);
if (topAlpha/2 + 0.5 == fadeStringDirection)
{
fadeStringDirection = 0;
stringRef = totalMillisecondsElapsed;
stringPhase++;
}
}
else
{
stringRef += gameTime.ElapsedGameTime.Milliseconds;
if (stringRef >= fadeStringDuration * stringPhase)
{
stringPhase++;
fadeStringDirection = -1;
stringRef = totalMillisecondsElapsed;
}
}
}
發佈簡化版本的渲染代碼會有幫助。 – asawyer 2011-04-26 20:20:44
這不是_that_壞。 ;) – 2011-04-26 20:44:30
+1 @Jeff Mercado。只要將它隱藏在AbstractInterpolator/AbstractBouncer/whatever ...類中,並在實際使用它時發現它整潔! – jv42 2011-04-27 08:46:15