现在已经和这个问题进行了3个小时的斗争,我觉得现在是时候问一些专业人士了。
我的问题是我想制作一个滚动条,我想通过使用两个整数然后给列表中的每个项目ID,然后说出所有项目将显示两个整数之间的ID,然后生成2个按钮,它们将+或 - 整数,以便您可以“滚动”项目。
所以要意识到这一点,我决定制作虚拟代码,看看我如何能够解决这个问题。 在大多数情况下它的工作,但我现在有问题,似乎我的绘图功能不断刷新屏幕(即使我已经放入一个bool以确保它woulden),并通过这样做它保持擦除我在屏幕上列出的数字。
下面是代码:
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();
}
希望你们中的一些聪明的人能够注意到我错过的错误。
提前致谢
〜Etarnalazure。
答案 0 :(得分:2)
你永远不会重置你的柜台。因此,数字仅在第一帧中可见。添加
count = 0;
在for循环之前。
此外,您可能想要修改您的结构。如果您使用列表&lt;&gt;,则每个项目都已包含其索引。如果使用for循环,则不必遍历每个项目:
for(int i = low; i <= high; ++i)
{
var currentItem = list[i];
}