2016-11-06 81 views
0

我想讓我的第一個XNA遊戲,我不知道如何實現以下內容: 我有一個不同類型的對象的列表,他們被加載和繪製。通過點擊其中一個對象,我需要創建一個相同類型的新對象,並將這個新對象添加到另一個列表中。 我試過下面的代碼,我可以添加儘可能多的對象,因爲我想要一個新的列表,但只有當我點擊第零個對象時(它們都有一個第零個對象的類型)。當我點擊其他對象時,什麼也沒有發生。如何使它工作?如何實現選擇

for (int i = 0; i < initialPlanets.Count; i++) 
{ 
    MouseState mouse = Mouse.GetState(); 
    if (initialPlanets[i].CollisionRectangle.Contains(
    mouse.X, mouse.Y) && 
    mouse.LeftButton == ButtonState.Released && 
    previousButtonState == ButtonState.Pressed) 
    { 
     userPlanetSequence.Add(new Planet(
     initialPlanets[i].Type, 
     GetPlanetSprite(initialPlanets[i].Type), 
     new Vector2(100 * (i + 1), 100))); 
    } 
    previousButtonState = mouse.LeftButton; 
} 

回答

0

我假設你在點擊事件時調用它。

每次通過循環時,您都在輪詢鼠標狀態。第一次通過它(在對象爲零時),您設置了previousButtonState = mouse.LeftButton,以便後續循環的if語句總是爲false。

我不能在不知道最初如何設置previousButtonState的情況下給出一個完整的示例,但朝着正確方向邁出的一步將會把MouseState mouse = Mouse.GetState()置於循環之外,因此您只能獲得一次。

+0

謝謝,它的工作。 MouseState mouse = Mouse.GetState()和previousButtonState = mouse.LeftButton應該在循環外部。 – Ksenia

+0

@Ksenia很高興我能幫到你。如果您覺得這很有幫助,upvote和複選標記可能會向其他社區成員發出信號,表明這可能對他們有幫助。 – SteelSoul