0

我想要程序做的是在.txt文件中出现的每个点绘制图形地面,但是每次我运行它时,它都不会绘制精灵?

这是代码......

        using (StreamReader sr = new StreamReader("trainingLevel.txt"))
        {
            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                string[] elements = line.Split(',');
                foreach (string e in elements)
                {
                    int id = int.Parse(e);
                    if (id == 1)
                    {
                        CreatePlatform(x, y);
                    }
                    x += widthPlatform;

                }
                y += heightPlatform;
                x = 0;
            }
        }


    public void CreatePlatform(int x, int y)
    {

        groundSprite = new Sprite();
        groundSprite.Position = new Vector2(x, y);
        groundSprite.Load("Ground", Content, simulator);
        groundSprite.IsStatic = true;
        groundSprite.Geom.OnCollision += OnCollision;


    }



protected override void Draw(GameTime gameTime) {
    GraphicsDevice.Clear(Color.CornflowerBlue);

    spriteBatch.Begin();
    List<Sprite> updateDraw = new List<Sprite>();
    foreach (Sprite z in updateDraw) {
        simulator.Update(gameTime.ElapsedGameTime.Milliseconds * .001f);
        z.Update(gameTime);
        spriteBatch.Draw(z.CurrentTexture, z.Position, null, Color.White, z.Rotation, z.Origin, 1, SpriteEffects.None, 1);
    }

    spriteBatch.End();

    base.Update(gameTime);
    base.Draw(gameTime);
}
4

3 回答 3

3

这是问题所在:

List<Sprite> updateDraw = new List<Sprite>();

updateDraw当然,此时将包含零个元素。

foreach (Sprite z in updateDraw)

然后将完全什么都不做。

不过,我完全不确定你到底想在那里做什么,所以这完全取决于你自己弄清楚然后修复它。

于 2010-02-16T00:20:41.280 回答
1

您的 foreach 循环正在枚举一个空列表 - 您可能希望使 updateDraw 成为该类的成员并随着场景的进行添加/删除项目,而不是在每次绘制时重新创建它。

于 2010-02-16T00:21:03.200 回答
1

所以,你正在创建一个新的、空的 Sprite 列表,遍历这个空列表并在其中绘制所有 [不存在的] 对象,但屏幕上什么也没有出现?

也许你应该试着给它一些东西来画。

编辑:看起来我已经被打败了;)

于 2010-02-16T00:21:26.833 回答