我有一个带有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()方法无法启动。我该如何解决这个问题?
答案 0 :(得分:0)
在checkIfAnimationDone0()中,何时
a.getCurrent() != a.getFrame(a.getNumberOfFrames() - 1)
你去checkIfAnimationDone1(),所以订单永远不会设置为1。
将checkIfAnimationDone0()中的checkIfAnimationDone1()更改为checkIfAnimationDone0()。