XNA ArgumentOutOfRangeException未处理

时间:2015-10-23 05:58:06

标签: c# xna

这里编程相对较新,这是我的第一个"大"独立项目;这是一个平台游戏。因此,当我查看代码并对其进行调试时,我了解它的含义以及错误是什么,问题是我无法弄清楚解决方案是什么......我已经尝试过了不同的东西。这是我认为错误的地方。在我的启动画面课程中;

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.

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()方法中。