Ich lerne F #, und entschied mich zu versuchen, einfache XNA-Spiele für Windows mit F # (reiner Enthusiasmus) zu machen, und bekam ein Fenster mit einigen Bildern, die auftauchten.XNA 4.0 - Was passiert, wenn das Fenster minimiert wird?
Hier ist der Code:
(*Methods*)
member self.DrawSprites() =
_spriteBatch.Begin()
for i = 0 to _list.Length-1 do
let spentity = _list.List.ElementAt(i)
_spriteBatch.Draw(spentity.ImageTexture,new Rectangle(100,100,(int)spentity.Width,(int)spentity.Height),Color.White)
_spriteBatch.End()
(*Overriding*)
override self.Initialize() =
ChangeGraphicsProfile()
_graphicsDevice <- _graphics.GraphicsDevice
_list.AddSprite(0,"NagatoYuki",992.0,990.0)
base.Initialize()
override self.LoadContent() =
_spriteBatch <- new SpriteBatch(_graphicsDevice)
base.LoadContent()
override self.Draw(gameTime : GameTime) =
base.Draw(gameTime)
_graphics.GraphicsDevice.Clear(Color.CornflowerBlue)
self.DrawSprites()
Und die AddSprite Methode:
member self.AddSprite(ID : int,imageTexture : string , width : float, height : float) =
let texture = content.Load<Texture2D>(imageTexture)
list <- list @ [new SpriteEntity(ID,list.Length, texture,Vector2.Zero,width,height)]
Das _list Objekt hat eine Content, hier ist der Konstruktor:
type SpriteList(_content : ContentManager byref) =
let mutable content = _content
let mutable list = []
Aber ich kann das Fenster nicht minimieren, da, wenn es seinen Fokus wiedergewinnt, bekomme ich diesen Fehler:
ObjectDisposedException
Cannot access a disposed object.
Object name: 'GraphicsDevice'.
Was geschieht?
Es scheint mir, dass XNA das GraphicsDevice automatisch bei der Minimierung des Fensters disponiert. Auch wenn ich es neu geladen habe, habe ich den gleichen Fehler, aber mit Objektname: 'Texture2D'. Ich habe versucht, die Textur neu zu laden, was auch nicht funktioniert. Ich bin auf diesem einen verloren –