我正在尝试为Simon的游戏中的按钮设置动画,它会生成一个随机按下的4个按钮序列,通过按钮动画显示顺序,然后获取用户输入以匹配生成的序列。我找到了一个使用Handlers在android中使用的暂停方法。我以为我正确地捕获了这些功能,但不是暂停每个请求,而是在执行开始时暂停,然后立即激活所有按钮,因此当它一次闪烁所有三个按钮时,知道序列几乎是不可能的。就按钮动画而言,这就是我所拥有的。
//将按钮发送到动画,显示存储的匹配
的序列private void show(final Button first,final Button second,final Button third,final Button fourth)
{
int caseChoice = 0;
for (int i = 0; i < currentCount; i++)
{
caseChoice = matching[i];
switch (caseChoice)
{
case 0:
mHandler.postDelayed(new Runnable() {
public void run() {
animDelay(first);
}
}, 6000);
break;
case 1:
mHandler.postDelayed(new Runnable() {
public void run() {
animDelay(second);
}
}, 6000);
break;
case 2:
mHandler.postDelayed(new Runnable() {
public void run() {
animDelay(third);
}
}, 6000);
break;
case 3:
mHandler.postDelayed(new Runnable() {
public void run() {
animDelay(fourth);
}
}, 6000);
break;
}
}
}
//used to delay button animation, the button it is sent (reusable)
private void animDelay(Button theButton)
{
Animation animAlpha = AnimationUtils.loadAnimation(this, R.anim.anim_alpha);
theButton.startAnimation(animAlpha);
}
答案 0 :(得分:0)
您当前的代码会重复执行,并在6秒内发布延迟操作。
循环迭代非常快,因此“6秒内发生的事情”的所有帖子都非常接近。
如果您希望稍后发布每个连续的操作,您应该执行以下操作:
mHandler.postDelayed(new Runnable() {
public void run() {
animDelay(first);
}
}, (i * 6000) );