【问题标题】:Adding rectangles to a list via a for loop and then drawing them to the screen通过 for 循环将矩形添加到列表中,然后将它们绘制到屏幕上
【发布时间】:2014-02-09 22:23:03
【问题描述】:

我正在使用 C# 和 XNA 构建突破的基本克隆。除了尝试创建块并将其绘制到屏幕上之外,所有代码似乎都运行良好。

在 LoadContent() 方法中,我使用了一个 for 循环,尝试将 10 个矩形添加到矩形列表(仅用于测试),并更改 X 和 Y 值。

int xChange = 0;
int yChange = 0;
//loop iterates 10 times as a test
for (int i = 0; i == 10; i++)
{
    rectList.Add(new Rectangle(100+xChange, 200+ yChange, 40, 80));
    xChange += 100;
    yChange += 50;
}

然后在 draw 方法中,我使用了一个 foreach 循环来绘制其中的每一个:

foreach (Rectangle rect in rectList)
{
    spriteBatch.Draw(block, rect,  Color.White);
}

当我运行这段代码时,什么都没有,我不知道为什么。完整代码可以在http://pastebin.com/TNbzgUqn找到。

编辑:通过手动添加一个矩形(不是在循环中),我得到了一个要绘制的矩形。这将范围缩小到将矩形添加到列表中的 for 循环。

//The code below draws, the code above does not
Rectangle test1 = new Rectangle(200, 200, 40, 80);
rectList.Add(test1);

【问题讨论】:

  • rectlist 在哪里声明?
  • 如果我不得不猜测,您将这些矩形绘制到 spritebatch 中,但从未将批次绘制到屏幕上。这是一个疯狂的猜测。我没有看到特定的绘制调用,绘制 spritebatch。我所看到的只是 .End() 被调用。
  • 显然 End() 至少从我在 MSDN 上看到的内容来看是您所做的。也许您没有在批处理中正确设置选项以使其输出到您的屏幕。或者,也许你正在画一些你看不到的东西。验证您的参数
  • @DeanKnight rectList 在类的基础中声明(以及其他有效的矩形和纹理),所以这不是问题。我检查了参数,它应该以可见的大小在屏幕上绘制。

标签: c# list xna


【解决方案1】:

来自 MSDN:

通过使用 for 循环,您可以重复运行一个语句或一个语句块,直到指定表达式的计算结果为 false。

你的 for 循环是说:从 0 开始,在 i 等于 10 时执行以下操作。这总是错误的。 你应该改用:

for(int i = 0; i <= 10; i++)
{
 // your code here
}

【讨论】:

  • 谢谢!这很有帮助:)
  • 不客气 :) 还请注意,将 i
猜你喜欢
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 2016-02-26
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多