-1

一直在与这个问题作斗争 3 个小时,我想是时候问一些专业人士了。

我的问题是我想制作一个滚动条,我发现我想通过使用两个整数来制作它,然后给列表中的每个项目一个 ID,然后说所有具有 ID 的项目在两个整数之间将显示,然后制作 2 个按钮,将 + 或 - 整数,以便您可以“滚动”通过项目。

因此,为了实现这一点,我决定制作虚拟代码,看看我该如何解决。在大多数情况下它的工作,但是我现在有问题,似乎我的绘图功能正在不断刷新屏幕(即使我已经输入了一个 bool 以确保它会),并且这样做它会一直擦除我在屏幕上列出的数字。

继承人的代码:

List<int> test = new List<int>() {1,2,3,4,5,6,7 };

        int low = 0;
        int high = 3;
        int count;
        bool isDone = false;

 public override void Draw(GameTime gameTime)
        {
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null);

if (!isDone)
            {
                int posX = 20;
                foreach (int nr in test)
                {

                    if (count == high)
                    {
                        isDone = true;
                        break;

                    }
                    else
                    {
                        count++;
                    }
                    if (count >= low && count <= high)
                    {
                        posX += 20;
                        spriteBatch.DrawString(gameFont, nr.ToString(), new Vector2(posX, 20), Color.White);
                    }
                }
            }

 spriteBatch.End();

}

希望你们中的一些聪明人能注意到我一直错过的错误。

提前致谢

〜埃塔纳拉祖尔。

4

1 回答 1

2

你永远不会重置你的计数器。因此,数字将仅在第一帧中可见。添加

count = 0;

在for循环之前。

此外,您可能想要修改您的结构。如果你使用 List<>,那么每个项目都已经有了它的索引。如果您使用 for 循环,您不必遍历每个项目:

for(int i = low; i <= high; ++i)
{
    var currentItem = list[i];
}
于 2012-07-15T17:19:29.370 回答