【发布时间】:2010-12-30 16:36:19
【问题描述】:
我正在学习 F#,并决定尝试使用 F# 为 windows 制作简单的 XNA 游戏(纯粹的热情),并得到一个显示一些图像的窗口。
代码如下:
(*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()
以及AddSprite方法:
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)]
_list 对象有一个 ContentManager,这里是 构造函数:
type SpriteList(_content : ContentManager byref) =
let mutable content = _content
let mutable list = []
但我无法最小化窗口,因为当它重新获得焦点时,我收到此错误:
ObjectDisposedException
无法访问已处置的对象。
对象名称:'GraphicsDevice'。
发生了什么?
【问题讨论】:
-
在我看来,当我最小化窗口时,XNA 会自动处理 GraphicsDevice。即使,当我重新加载它时,我得到了同样的错误,但对象名称:'Texture2D'。我尝试重新加载纹理,这也不起作用。我迷失了这个