Помогите отрисовать спрайт - PullRequest
0 голосов
/ 16 февраля 2010

Я хочу, чтобы программа рисовала графическое основание в каждой точке, в которой единица появляется в файле .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);
}

Ответы [ 3 ]

4 голосов
/ 16 февраля 2010

Вот проблема:

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

updateDraw, конечно, будет содержать ноль элементов в этой точке.

foreach (Sprite z in updateDraw)

Тогда абсолютно ничего не сделает.

Я совершенно не уверен, что вы на самом деле пытаетесь там делать, так что вам действительно нужно это выяснить, а затем исправить.

1 голос
/ 16 февраля 2010

Итак, вы создаете новый пустой список спрайтов, перебираете этот пустой список и рисуете в нем все [несуществующие] объекты, но на экране ничего не появляется?

Возможно, вам стоит попробовать дать ему что-нибудь для рисования.

РЕДАКТИРОВАТЬ: Похоже, меня избили;)

1 голос
/ 16 февраля 2010

Ваш цикл foreach перечисляет пустой список - вы, вероятно, хотите сделать updateDraw членом класса и добавлять / удалять элементы из него по мере развития сцены, а не пересоздавать ее каждый раз, когда она рисуется.

...