Java 同时使用倒计时和队列

Java 同时使用倒计时和队列,java,android,queue,countdowntimer,Java,Android,Queue,Countdowntimer,我正在做一个“西蒙说”的模式游戏。玩家必须重复一个越来越长的模式,直到他们搞砸为止。 游戏由一个2x2的颜色网格组成,每个网格后面都有一个较暗的网格。通过将alpha从1-->0-->1更改。我给点击的效果 下面是我用来在模式增加时显示它的代码,每当模式重置或增加时都会调用它。但目前它总是跳过图案中的最后一个值,如果重复相同的颜色,它不会再次闪烁,它只是保持黑暗,我做错了什么 有用信息: Pattern是存储用户必须重复的模式的arraylist getColorById返回每种颜色对应的Im

我正在做一个“西蒙说”的模式游戏。玩家必须重复一个越来越长的模式,直到他们搞砸为止。 游戏由一个2x2的颜色网格组成,每个网格后面都有一个较暗的网格。通过将alpha从1-->0-->1更改。我给点击的效果

下面是我用来在模式增加时显示它的代码,每当模式重置或增加时都会调用它。但目前它总是跳过图案中的最后一个值,如果重复相同的颜色,它不会再次闪烁,它只是保持黑暗,我做错了什么

有用信息:

  • Pattern是存储用户必须重复的模式的arraylist

  • getColorById返回每种颜色对应的ImageView[0-3]

TLDR:

  • 我需要在一个名为pattern的arrayList中闪现每个项目,这样玩家可以看到并重复它,但当前它跳过了最后一个项目,如果重复相同的项目,它只会保持闪现而不是闪现两次
编辑:有时,序列中的最后一项确实显示,但它是否显示是非常随机的

public void flashPattern(视图){
最终队列=新链接列表(模式);
最终int TIMETBETWEENTEPS=500;
新的倒计时(pattern.size()*timeBetweenSteps,timeBetweenSteps){
private ImageView lastLight=null;
@凌驾
公共void onTick(长毫秒未完成){
if(lastLight!=null){
lastLight.animate().alpha(1f).setDuration(250);
}
lastLight=getColorById(queue.remove());
lastLight.animate().alpha(0f).setDuration(250);
}
@凌驾
公共无效onFinish(){
if(lastLight!=null){
lastLight.animate().alpha(1f).setDuration(250);
}
}
}.start();
}