2015-11-25 3 views
-1

У меня есть анимация для Android с 10 кнопками, и мне нужно вызвать эти кнопки с порядком, поэтому у меня есть переменная с именем order, если order = 1 button1 может активироваться, если порядок = 2, кнопка 2 может активироваться и так далее. Когда я открываю программу, анимация начинается, то вторая анимация повторяется после того, как первый один заканчивается, и между ними мне нужно изменить переменные порядка 1. У меня есть следующий код:Как изменить глобальную переменную в методе

public class Juego extends Activity 
{ 
    private AnimationDrawable animacion, loop; 
    private MediaPlayer miPlayer; 
    private int order = 0; 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_juego); 
    ImageView video = (ImageView) findViewById(R.id.secuencia); 
    video.setBackgroundResource(R.drawable.animation_drawable_start); 
    animacion = (AnimationDrawable) video.getBackground(); 
    animacion.start(); 
    checkIfAnimationDone0(animacion); 
} 
public void checkIfAnimationDone0(AnimationDrawable anim) 
{ 
    final AnimationDrawable a = anim; 
    int timeBetweenChecks = 20; 
    android.os.Handler h = new android.os.Handler(); 
    h.postDelayed(new Runnable() 
    { 
     public void run() 
     { 
      if (a.getCurrent() != a.getFrame(a.getNumberOfFrames() - 1)) 
      { 
       checkIfAnimationDone1(a); 
      } 
      else 
      { 
       ImageView video = (ImageView) findViewById(R.id.secuencia); 
       video.setBackgroundResource(R.drawable.animation_drawable_loop_inicio); 
       loop = (AnimationDrawable) video.getBackground(); 
       loop.start(); 
       order=1; 
      } 
     } 
    }, timeBetweenChecks); 
}; 

public void onClickButton2(View any) 
{ 
    if (order == 1) 
    { 
     ImageView video = (ImageView) findViewById(R.id.secuencia); 
     video.setBackgroundResource(R.drawable.animation_drawable_boton_1); 
     animacion = (AnimationDrawable) video.getBackground(); 
     miPlayer = MediaPlayer.create(Juego.this, R.raw.sonido_boton_1); 
     animacion.start(); 
     miPlayer.start(); 
     checkIfAnimationDone1(animacion); 
     order=2; 
    } 
} 

и т.д ..

Проблема в том, что значение глобального переменного порядка не изменяется в строке порядка = 1, а метод onClickButton() не может начинаться. Как я могу это решить?

+2

'order' не является глобальной переменной; это переменная экземпляра. – FredK

ответ

0

В checkIfAnimationDone0(), когда

a.getCurrent() != a.getFrame(a.getNumberOfFrames() - 1) 

вы идете checkIfAnimationDone1(), так что порядок никогда не устанавливается в 1.

Изменение checkIfAnimationDone1() в checkIfAnimationDone0() в checkIfAnimationDone0().

+0

Спасибо, это сработало! –

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