0

我只是在玩 XNA,当我想点击一个精灵并发生一些事情时,我输入了以下代码:

if(Mouse.GetState().LeftButton == ButtonState.Pressed)

{

        if (sprite.Bounds.Contains(Mouse.GetState().X, Mouse.GetState().Y))
          {
              this.Exit();
          }
}

当我将鼠标悬停在精灵上并单击时,什么也没发生,为什么?

我该如何解决这个问题?

如果这有帮助,我将我的 2D 精灵写在一个矩形中

4

2 回答 2

0

请确认 Bounds 是这样计算的:

public Rectangle Bounds
{
    get
    {
        return new Rectangle(position.X - width / 2, position.Y - height / 2, width, height);
    }
}

我还建议每次更新时获取一次对 Mouse.GetState() 的引用,而不是根据需要调用它。

于 2012-08-23T13:44:08.620 回答
0

Texture.Bounds没有将矩形放在纹理的位置,X 和 Y 的值都等于 0。

.Contains()您将根据输入创建自己的矩形SpriteBatch.Draw()

在此处输入图像描述

纹理“logoTexture”位于屏幕左下角附近。

于 2012-08-23T21:38:27.713 回答