这是我第一次真正涉足 Android 编程,但我觉得我遇到了更多的 Java 问题——对 ScheduledThreadPoolExecutor 的工作方式存在某种重大误解(尽管我愿意接受它是 AnimatedSprites 的 AndEngine 问题的想法, 也)。本质上,我希望精灵在 onFling 发生之前是静止的。精灵动画,一秒钟后,再次停止。用户必须保持 Fling-ing 才能使精灵在水中“游动”。我遇到的问题是动画。如果在 1 秒的时间跨度内有多个 Fling,动画在停止前只显示一两帧,感觉就像“停止动画”任务在叠加。一世' 在我完成所有这些工作后,我会检查并确保 Flings 足够长并且方向正确。当我第一次实例化 ScheduledThreadPoolExecutor 时,我为它提供了 1 的池大小,据我了解,这意味着它一次不能有多个任务在队列中。最重要的是,在调用 .schedule() 之前,我 .remove() 任务,以确保其中没有任何内容。我确信这很简单,只是我对如何正确使用它有一些误解。我将在此处粘贴代码的相关部分:只是为了确保那里没有任何东西。我确信这很简单,只是我对如何正确使用它有一些误解。我将在此处粘贴代码的相关部分:只是为了确保那里没有任何东西。我确信这很简单,只是我对如何正确使用它有一些误解。我将在此处粘贴代码的相关部分:
...
private ScheduledThreadPoolExecutor shed = new ScheduledThreadPoolExecutor(1);
private Runnable slowDown = new Runnable(){
public void run(){
if (eelSprite.isAnimationRunning())
eelSprite.stopAnimation(0);
};
};
...
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
shed.remove(slowDown);
shed.schedule(slowDown, 1000, TimeUnit.MILLISECONDS);
if (!(eelSprite.isAnimationRunning()))
eelSprite.animate(frame_duration, 0, 12, true);
return false;
}