2013-06-11 28 views
0

我一直在尋找一種方式來阻止同一類的其他對象被拖動,當我開始拖着一個和懸停另一其ID拖累,以及...XNA:拖動時是否有辦法阻止其他項目(精靈)?

這裏是我的主項定義,

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

您可以通過拖動當前對象來保持「全局」屬性。

然後接受拖動每一個對象會檢查是否另一個尚未拖拽前:

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 
    ... 
} 
+0

感謝你爲這個, 但我知道這個方法,我一直在尋找一種替代,或者如果可能的更好的。 –

+0

這種方法簡單,快速和明確。 :) – Pragmateek

+0

hhhhmmmmmm 我在第一時間做過,但我教過它會移動內存很重,因爲我的對象在遊戲的某些部分將有近6000個實例 無論如何謝謝@Pragmateek :) –

相關問題