2017-01-02 3 views
-2

Мой код кажется мне чистым Я не понимаю, почему это не сработает.Java: простая переменная Проблема

Существует кнопка, она должна изменить спрайт, нарисованный, когда вы нажимаете на него (этот шаг работает), и когда вы нажимаете на него, также предполагается добавить +1 к моей переменной planetCount, цель этого шага - чтобы получить планету спрайт нарисованную:

right.addListener(new ClickListener() { 
    public void clicked(InputEvent event, float x, float y) { 
     sound.play(0.2f); 

     if (planetCount <= 4) { 
      choixRegion.setRegion(choix2Region); 
      choix2Region.setRegion(choix3Region); 
      choix3Region.setRegion(choix4Region); 
      choix4Region.setRegion(choix5Region); 
      choix5Region.setRegion(choixRegion); 

     } else if(planetCount < 4){ 
      planetCount = planetCount + 1; 
     } else if(planetCount > 4){ 
      planetCount = 4; 
     } 
    } 
}); 

и проблемы есть, для всех вариантов планеты она дает возвращает мне тот же экран (StartGame) подытожить, если у меня есть planetCount = 1, он должен возвращает меня Itryon-х Экран, но независимо от значения planetCount, он всегда возвращает экран StartGame:

oui.addListener(new ClickListener() { 
    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { 
     if(planetCount == 0){ 
      game.setScreen(new StartGame(game)); 
     } else if(planetCount == 1){ 
      game.setScreen(new Itryon(game)); 
     } else if (planetCount == 2){ 
      game.setScreen(new Nernel(game)); 
     } else if(planetCount == 3){ 
      game.setScreen(new Abela(game)); 
     } else if(planetCount == 4){ 
      game.setScreen(new StartGame(game)); 
     } 
     sound.play(0.2f); 
     music.stop(); 
     return true; 
    } 

Итак, где моя ошибка?

+3

Параметр 'еще if' бит выполняется только если начальная' if' условие ложно. В вашем случае ветка 'else if' никогда не будет запущена. – assylias

+0

Это зависит от того, чего вы хотите, но это будет вариант. – assylias

ответ

0
 public void clicked(InputEvent event, float x, float y) { 

      // ... 

      if (planetCount <= 4) { 
       // ... 
       // when true, planetCount is not increased. 
       // You can try setting planetCount = 1 at start, 
       // And you'll get only Itryon's screen. 
      } 
      else if(planetCount < 4){ 
       planetCount = planetCount + 1; 
      } 
      else if(planetCount > 4){ 
       planetCount = 4; 
      } 

Вы можете просто изменить метод, как показано ниже:

 public void clicked(InputEvent event, float x, float y) { 

      sound.play(0.2f); 

      choixRegion.setRegion(choix2Region); 
      choix2Region.setRegion(choix3Region); 
      choix3Region.setRegion(choix4Region); 
      choix4Region.setRegion(choix5Region); 
      choix5Region.setRegion(choixRegion); 

      // You should think about below logic. 

      planetCount++; 

      if (planetCount > 4) { 
       planetCount = 4; 
      } 
    } 
0

Проблема связана с использованием первой if else if структуры.

В вашем коде вы никогда не сможете запустить первый оператор else if, поэтому счетчик никогда не увеличивается.

Вы можете написать что-то вроде этого:

right.addListener(new ClickListener() { 
     public void clicked(InputEvent event, float x, float y) { 

      sound.play(0.2f); 

      if (planetCount < 4) { 
       choixRegion.setRegion(choix2Region); 
       choix2Region.setRegion(choix3Region); 
       choix3Region.setRegion(choix4Region); 
       choix4Region.setRegion(choix5Region); 
       choix5Region.setRegion(choixRegion); 
       planetCount = planetCount + 1; 

      } 
     } 
    }); 
Смежные вопросы