In this mini article I will show you how to use IDrawable Interface.
In your game project add an extra IDrawable near your Game object and Implement interface "IDrawable".
It will add this region with some functions and events:
#region IDrawable
Members
public new void Draw(GameTime gameTime)
{
throw
new NotImplementedException();
}
public int DrawOrder
{
get
{ throw new NotImplementedException(); }
}
public event EventHandler<EventArgs> DrawOrderChanged;
public bool Visible
{
get { throw new NotImplementedException(); }
}
public event EventHandler<EventArgs> VisibleChanged;
#endregion
Generally Draw function is already being used in the Game1.cs so its better you remove the first one added.Dont forget to insert these codes inside your new Draw Function:
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
So the updated structure will be like that:
public class Game1 :
Microsoft.Xna.Framework.Game,IDrawable
{
GraphicsDeviceManager
graphics;
SpriteBatch
spriteBatch;
public
Game1()
{
graphics = new
GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected
override void
Initialize()
{
base.Initialize();
}
protected
override void
LoadContent()
{
spriteBatch = new
SpriteBatch(GraphicsDevice);
}
protected
override void
UnloadContent()
{
}
protected
override void
Update(GameTime gameTime)
{
base.Update(gameTime);
}
#region IDrawable Members
public
new void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
base.Draw(gameTime);
}
public
int DrawOrder
{
get { throw new NotImplementedException(); }
}
public
event EventHandler<EventArgs> DrawOrderChanged;
public
bool Visible
{
get { throw new NotImplementedException(); }
}
public
event EventHandler<EventArgs> VisibleChanged;
#endregion
}
DrawOrder is used when to decide which DrawableGameComponents should draw in order. Such as:
DrawableGameComponent d3 = new DrawableGameComponent(this);
d3.DrawOrder = 3;
this.Components.Add(d3);
DrawableGameComponent d1 = new DrawableGameComponent(this);
d1.DrawOrder = 1;
this.Components.Add(d1);
DrawableGameComponent d2 = new DrawableGameComponent(this);
d2.DrawOrder = 2;
this.Components.Add(d2);
We can set its order here and draw it in order.
we have an event named DrawOrderChanged.When we set this,this event throws and we can add anything to control draworder functionality.
Visible indicates whether IDrawable.Draw should be called in Game.Draw for the game components.
And we can even know if a visibility changed so;
When adding Idrawable make sure you implement it on a DrawableGameComponent.Its much more useful there.