XNA鼠标位置在很​​大程度上偏离了ACTUAL位置

时间:2013-05-13 15:45:41

标签: xna position mouse offset

我在这里有一些简单的代码来获取鼠标位置并绘制它:

    class Pointer
{
    MouseState currPointerState;
    Vector2 currPointerPos;


    public Pointer()
    {
    }

    public void Update()
    {
        currPointerState = Mouse.GetState();
        currPointerPos.X = currPointerState.X;
        currPointerPos.Y = currPointerState.Y;
    }

    public void Draw(SpriteBatch spriteBatch, Texture2D pointerTexture)
    {
        spriteBatch.Draw(pointerTexture, currPointerPos, Color.White);
    }

}

然后在我的主游戏文件中:

        protected override void Update(GameTime gameTime)
    {
        pointer.Update();
        base.Update(gameTime);
    }

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        spriteBatch.Begin();

        pointer.Draw(spriteBatch, pointerTexture);
        menuManager.Draw(spriteBatch, menu_bar);

        spriteBatch.End();
        base.Draw(gameTime);
    }

游戏目前在一个窗口中运行,但是鼠标距离太远500像素,距离实际鼠标位置100像素。

在我添加以下代码后发生了这种情况:(菜单绘图类)

    enum MenuState
{
    mainMenu,
    playing,
    options
};

class MenuManager : Game1
{
    MenuState menuState = MenuState.mainMenu;
    Vector2 button1 = Vector2.Zero;


    public void Draw(SpriteBatch spriteBatch, Texture2D menuBar)
    {
        switch (menuState)
        {
            case MenuState.mainMenu:
                spriteBatch.Draw(menuBar, button1, Color.White);
                    break;



        }
    }
}

}

知道为什么鼠标位置可能已经改变了吗?

1 个答案:

答案 0 :(得分:4)

所以我想通了。

如果有人遇到麻烦,解决办法是删除:Game1引用作为低音类。游戏类不止一次被创建,因此窗口坐标被堆叠。