如何修改方法中的全局变量

时间:2015-11-25 22:27:44

标签: java android

我有一个带有10个按钮的android动画,我需要用一个命令触发这个按钮,所以我有一个名为order的变量,如果order = 1 button1可以激活,如果order = 2 button 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()方法无法启动。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

在checkIfAnimationDone0()中,何时

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

你去checkIfAnimationDone1(),所以订单永远不会设置为1。

将checkIfAnimationDone0()中的checkIfAnimationDone1()更改为checkIfAnimationDone0()。