XNA:有没有办法在拖动时阻止其他项目(精灵)?

时间:2013-06-11 20:43:41

标签: c# xna hover mouse drag

我正在寻找一种方法来阻止来自同一类的其他对象被拖动,当我开始拖动一个并悬停另一个时,它也被拖动...

这是我的主要项目定义,

class DrawableObject 
{
public Rectangle RectObject

public void Update(GameTime gameTime, MouseState ms)
        {
            if ((ButtonState.Pressed == Mouse.GetState().LeftButton))
                if (RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0)))
                    Dragged = true;
            else
                Dragged = false;
                if (Dragged)
                    RectObject = new Rectangle(ms.X - RectObject.Width / 2, ms.Y - RectObject.Height / 2, RectObject.Width, RectObject.Height);               
        }
}

由于我将创建超过50个此类的实例,因此问题会更加严密。

1 个答案:

答案 0 :(得分:1)

您可以在拖动当前对象的情况下保留“全局”属性。

然后在接受拖动每个对象之前,将检查是否还有一个对象被拖动:

public void Update(GameTime gameTime, MouseState ms)
{
    if (currentObject != null && this != currentObject) return;

    if ((ButtonState.Pressed == Mouse.GetState().LeftButton))
    {
        if (RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0)))
        {
            Dragged = true;
            currentObject = this;
        }
    }
    else
    ...
}