清除屏幕

时间:2012-02-26 06:37:51

标签: c# xna

SomeClass.cs

public void clearscreen()
{
    main.GraphicsDevice.Clear(Color.Black);
}

为什么我不能通过从另一个类调用此方法来清除屏幕?

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.Black);
    spriteBatch.Begin();
    mainMenu.MenuDraw();
    spriteBatch.Draw(cursorTexture, cursorPosition, Color.White);
    spriteBatch.End();
    base.Draw(gameTime);
}

从mainMenu.Draw();

中调用clearscreen方法

3 个答案:

答案 0 :(得分:2)

在Draw方法中使用它:

protected override void Draw(GameTime cGameTime) 
{
        GraphicsDevice.SetRenderTarget(null); 
        GraphicsDevice.Clear(Color.Black); 
        ....
        ....
        ....

答案 1 :(得分:1)

你需要将你的GraphicsDeviceManager(最有可能名为'graphics')传递给类并调用它。

graphics.GraphicsDevice.Clear(Color.Black);

答案 2 :(得分:0)

如果将绘图方法重定向到另一个类,则仍需要使用Game1.cs中声明的第一个graphicsDevice(新MonoGame项目的默认类名)。我的方法是创建另一个类,该类将以静态公共访问方式保存graphicsDevice引用。因此:

Game1.cs:LoadContent

    spriteBatch = new SpriteBatch(GraphicsDevice);
    Memory.spriteBatch = spriteBatch;

Memory.cs:

class Memory
{
    //monogame

    public static GraphicsDeviceManager graphics;
    public static SpriteBatch spriteBatch;

现在进入您重定向的课程,例如BattleModule.cs:

private static void DrawGeometry()
{
Memory.spriteBatch.GraphicsDevice.Clear(Color.Black);