抱歉,如果这个问题存在于某个地方
我正在开发一款非常像记忆矩阵的游戏,这是我第一款使用AndEngine的游戏。在我的游戏中,在加载矩阵阶段,我必须确保只有在加载矩阵之后,游戏才进入游戏状态(只有这样,才会处理用户的动作)。因此,在下面的过程中将Modifier嵌入到tile中,我使用了CountDownLatch
:
public static void loadingBoardAnimation(Sprite board,
List<AnimatedSprite> tiles, final Set<Integer> keys,
Runnable playing) {
final CountDownLatch latch = new CountDownLatch(keys.size());
for (final AnimatedSprite tile : tiles) {
/* Appear */
MoveModifier initialMove = new MoveModifier(1, board.getX(),
board.getY(), tile.getX(), tile.getY());
/* Delay 1 second */
DelayModifier delay = new DelayModifier(1);
SequenceEntityModifier animation = new SequenceEntityModifier(
new IEntityModifierListener() {
@Override
public void onModifierStarted(
IModifier<IEntity> pModifier, IEntity pItem) {}
@Override
public void onModifierFinished(
IModifier<IEntity> pModifier, IEntity pItem) {
if (keys.contains(tile.getTag())) {
tile.animate(50, false);
}
latch.countDown();
}
}, initialMove, delay);
tile.registerEntityModifier(animation);
}
/* Wait until animation finishes */
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
但似乎在执行此程序时,它会阻止整个游戏。我在latch.countDown()
中设置了断点,看到调试器永远不会到达那里。所以,我猜AndEngine模型只在一个线程中使用事件驱动架构(无法调度新到达的动画),是吗?在这种情况下,任何人都可以建议我一个解决方案: - )....提前致谢