0

同じクラスの他のオブジェクトがドラッグされるのをブロックする方法を探していました.1つのドラッグを開始して別のオブジェクトをホバーすると、それもドラッグされました...

これが私の主なアイテムの定義です。

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 を超えるインスタンスを作成するため、問題はより厳しくなります。

4

1 に答える 1

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
    ...
}
于 2013-06-11T20:54:54.100 に答える