Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:1.3.2013 16:06

Zdravím, začal jsem zkoušet MonoGame pro Win8. Je to prkaticky XNA s pár úpravama. Vytvořil sjem si třídu, respektive komponentu GameWorld

 class GameWorld : DrawableGameComponent
{
   ....
   Game1 game;
   SpriteBatch spriteBatch

   public GameWorld(Game1 game)
    :base(game)
   {
      this.game=game;
      this.spriteBatch= game.spritebatch;
   }

     public override void Initialize()
        {
            base.Initialize();
        }

        protected override void LoadContent()
        {
            tx_heli = content.Load<Texture2D>("helicopterDeath");

            player = new Player(tx_heli);
            base.LoadContent();
        }

        protected override void UnloadContent()
        {
            base.UnloadContent();
        }

        public override void Update(GameTime gameTime)
        {
            player.Update(game.Window);

            base.Update(gameTime);
        }

        public override void Draw(GameTime gameTime)
        {

            spriteBatch.Begin(); // zde to spadne
            player.Draw(spriteBatch);
            spriteBatch.End();

            base.Draw(gameTime);
        }

}

Komponentu zaregistruju v třídě 1 a přidám ji do Components.

this.Components.Add(world);

Hra spadne v metodě Draw ve třídě GameWorld. Spritebatch je null. Pokud odkážu přes game na spriteBatch, tedy

game.spriteBatch.Begin(); // zde to spadne
            player.Draw(game.spriteBatch);
            game.spriteBatch.End();

tak to funguje bez problémů. Nevíte, někdo kde by mohla být chyba ? Děkuji moc za odpovědi.

Odpovědět
1.3.2013 16:06
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Luboš Běhounek Satik:1.3.2013 16:34

V tom konstruktoru je game.spriteBatch ještě null, takže do this.spriteBatch taky přiřadíš null.

Tohle přiřazení musí proběhnout až po tom, co v game.spriteBatch už něco je.

Nahoru Odpovědět
1.3.2013 16:34
https://www.facebook.com/peasantsandcastles/
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Petr Nymsa:1.3.2013 16:56

A kdy to tám tedy přiřadit ?

Nahoru Odpovědět
1.3.2013 16:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na Luboš Běhounek Satik
Petr Nymsa:1.3.2013 17:00

Rychleji se ptám než jednám :) . Samozřejmě že přiřadím až poté co se založí spriteBatch v Game1, tedy v metodě LoadContent. Nyní už funguje vše ok

Nahoru Odpovědět
1.3.2013 17:00
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.