Я работаю над проектом для простой игры, где вы можете пойти в разные комнаты, используя кнопки (север, восток, запад, юг). В методе makeFrame() моего gui я создаю панель, кнопки и т. Д. Затем я установил комнату по умолчанию для «зала», и actionlistener вызывает метод goRoom и передает направление и currentRoom этому методу. Метод goRoom меняет currentRoom на другую комнату в зависимости от текущегоRoom. Я включил инструкции печати, чтобы убедиться, что он работает, и пока он работает нормально.Текущее значение переменной сброса ActionListener по умолчанию
Каждый раз, когда игра начинается по умолчанию, зал представляет собой зал. Итак, когда вы нажимаете кнопку, например «Север», вызывается NorthButton, в котором мы вызываем метод goRoom, проходящий по направлению (север) и по умолчанию «зал» (поскольку игра только начинается и использует значение по умолчанию комната). Затем комната меняется от зала до государственной комнаты (в рамках метода goRoom). Когда я пытаюсь нажать еще одну кнопку, currentRoom вернется к значению по умолчанию (зал).
Я думаю, что прослушиватель действий получает значение из метода makeFrame() вместо обновленного значения из метода goRoom. Код ниже:
public class StoreGUI extends JFrame
{
public String currentRoom;
public StoreGUI()
{
makeFrame();
}
private void makeFrame()
{
currentRoom = "hall";
....
northButton = new JButton("Go North");
northButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
direction = "north";
goRoom(direction, currentRoom); }
});
toolbar.add(northButton);
westButton ....
southButton ....
eastButton ....
picture.setIcon(new ImageIcon("image/hall.png"));
frame.getContentPane().add(picture);
frame.pack();
frame.setVisible(true);
}
private void goRoom(String direction, String currentRoom)
{
// get current room and check which direction button the user has pressed
if (direction == "north"){
if(currentRoom == "hall"){
// Inserts the image icon and change currentRoom
imgageTitle = "image/stateRoom.png";
currentRoom = "stateRoom";
}
....
}
В чем проблема? Как я могу это исправить? Я почти уверен, что это действительно просто, но я стоп.
Я попробовал оба, но я получил та же проблема. Он продолжает изменять текущую комнату до значения по умолчанию.Как я уже сказал, я использовал печатные заявления, и он печатает, что нынешняя комната - это зал. тогда, когда goRoom называется, он печатает новую комнату (скажем, государственную комнату). Но когда я пытаюсь нажать еще одну кнопку, она изменит новую комнату на стандартную. – shieldcy
У вас есть проблема с затенением, проверьте обновление ... – MadProgrammer
Большое вам спасибо. Мне потребовалось 5 дней, и я этого даже не заметил. – shieldcy