这里编程相对较新,这是我的第一个"大"独立项目;这是一个平台游戏。因此,当我查看代码并对其进行调试时,我了解它的含义以及错误是什么,问题是我无法弄清楚解决方案是什么......我已经尝试过了不同的东西。这是我认为错误的地方。在我的启动画面课程中;
public override void Update(GameTime gameTime)
{
inputManager.Update();
Animation a = animation[imageNumber];
FAnimation.Update(gameTime, ref a);
animation[imageNumber] = a;
if (animation[imageNumber].Alpha == 0.0f)
imageNumber++;
if (imageNumber >= animation.Count - 1 || inputManager.KeyPressed(Keys.Enter))
{
ScreenManager.Instance.AddScreen(new TitleScreen(), inputManager);
}
}
public override void Draw(SpriteBatch spriteBatch)
{
animation[imageNumber].Draw(spriteBatch); ------> (ERROR)
}
然后这是我的屏幕管理器类的AddScreen方法;
public void AddScreen(GameScreen screen, InputManager inputManager)
{
transition = true;
newScreen = screen;
fade.IsActive = true;
fade.Alpha = 0.0f;
fade.Increase = true;
fade.activateValue = 1.0f;
this.inputManager = inputManager;
}
问题可能会延伸到淡入淡出的动画类吗?但我想我会从这开始。发生错误时,动画计数为1,imageNumber也为1.
答案 0 :(得分:0)
你增加imageNumber
并在超过最大值时有一个警卫,但是你无处再次将其重新设置回0
。
变化:
if (imageNumber >= animation.Count - 1 || inputManager.KeyPressed(Keys.Enter))
{
ScreenManager.Instance.AddScreen(new TitleScreen(), inputManager);
}
...为:
if (imageNumber >= animation.Count - 1 || inputManager.KeyPressed(Keys.Enter))
{
ScreenManager.Instance.AddScreen(new TitleScreen(), inputManager);
imageNumber = 0; // reset the sequence
}
...在Update()
方法中。