2014-01-05 2 views
0

Я делаю игру, используя XNA, и часть игры включает в себя сбор капель. У меня есть этот код ниже, который определяет пересечение между характером и пунктом:BackColor не меняется, хотя условия выполняются

//Intersection Code, If the character intersects with the item while the item is showing, run below 
if (alive && charRange.Intersects(itemRect)) 
{ 
    alive = false; //stop showing the item 
    Inv.ItemGot(); //Call the ItemGot class, which adds the item to the inventory screen 
} 

Другой класс содержит метод ItemGot(), и код для этого ниже:

public void ItemGot() 
{ // Called from the ItemList class... 
    // Sets the background color to black when called 
    btnItems[0] = new Panel(); 
    btnItems[0].BackColor = Color.Black; 
} 

В основном, когда персонаж пересекает с прямоугольником элемента, цвет btnItems[0] должен перейти от CornflowerBlue (который я установил ранее) к Black. Тем не менее, цвет не меняется, когда метод вызывается, и я не знаю почему. Мой код кажется правильным, и у меня были сверстники, подтверждающие это для меня.

+0

Установили ли вы контрольную точку в 'ItemGot()', чтобы подтвердить, что она вызвана? – Andrew

+0

@Andrew Да, 'ItemGot()' вызывается как btnItems [0] заполняется – demiZe

+0

Вы инициализируете 'btnItem [0]' в 'ItemGot()'. Является ли 'btnItem [0]' равным 'panel 1'? – user3093781

ответ

0

Вы создаете файл new Panel, но не используете его. Вероятно, вы не хотите создавать новую, потому что вы сказали, что цвет уже установлен на CornFlowerBlue.

Итак, если у вас уже есть настройка Panel ... убедитесь, что вы добавили ее в список btnItems. Таким образом, вы можете получить к нему доступ через btnItems[0].

+0

Я избавился от 'btnItems [0] = new Panel();' но теперь я получаю исключение NullReferenceException. Тем не менее, я уже инициализировал массив панели в конструкторе. – demiZe

+0

Я добавил подробности в свой ответ. – Andrew

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