2015-08-14 3 views
1

Я хочу иметь класс, который предназначен для управления кнопками в моей игре. До сих пор у меня есть следующий код:C# Monogame - Изменить цвет оттенка при зависании

public class Button 
{ 
    private SpriteFont btnFont; 
    private string btnTxt; 
    private Vector2 btnPos; 
    private Color btnColour; 

    public Button(SpriteFont newFont, string newTxt, Vector2 newPos, Color newColour) 
    { 
     btnFont = newFont; 
     btnPos = newPos; 
     btnTxt = newTxt; 
     btnColour = newColour; 
    } 

    public void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.DrawString(btnFont, btnTxt, btnPos, btnColour); 
    } 
} 

И использование:

private Button btn_1; 
private Color colour = new Color.CornflowerBlue; 
private Rectangle buttonArea_1 = new Rectangle(24, 300, 192, 39); 
// LoadContent() Method: 
btn_1 = new Button(Game1.defaultFontBig, "Play Game", new Vector2(24, 300), colour); 
// Update() Method: 
MouseState mouseState = Mouse.GetState(); 
Point mousePosition = new Point(mouseState.X, mouseState.Y); 
if (buttonArea_1.Contains(mousePosition)) 
{ 
    colour = Color.Yellow; 
    if (mouseState.LeftButton == ButtonState.Pressed) 
    { 
     Game1.currentGameState = Game1.gameStates.loadingScreen; 
    } 
} 
else 
{ 
    colour = Color.CornflowerBlue; 
} 
// Draw Method(): 
btn_1.Draw(spriteBatch); 

Но что-то пошло не так ... Когда я проверить игру, и я парить на кнопку это не меняет его цвет от синего кустарника до желтого, но по-прежнему меняет состояние игры, когда я нажимаю на нее. Я чувствую, что это какая-то простая инициализация, которую я пропускаю, поэтому я прошу вас о помощи. Любые примеры кода/подходы, объясняемые, были бы замечательными.

EDIT:

Via свойства, как это?

public Color Colour 
{ 
    public get { return colour; } 
    private set { colour = value; } 
} 

Но меняется ли использование? Могу ли я передать цвет в конструктор и изменить его в Update()?

+0

Где buttonArea_1 инициализируются? –

+0

Кроме того, изменение цвета переменной не влияет на кнопку. Вам нужно выставить цвет кнопки как свойство через get/set –

+0

Вы можете обновить его с помощью btn1.Colour –

ответ

0

Вместо:

private Color btnColour;

в классе кнопки, сделайте следующее:

public Color btnColour { get; set; }

затем в коде использования, вместо этого:

colour = Color.Yellow;

сделать это:

btn_1.colour = Color.Yellow;

и:

btn_1.colour = Color.CornflowerBlue;

+0

Это сделало трюк. –

Смежные вопросы