AndEngine线程模型:如何等到动画停止?

时间:2014-07-05 14:38:57

标签: android multithreading andengine

抱歉,如果这个问题存在于某个地方

我正在开发一款非常像记忆矩阵的游戏,这是我第一款使用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模型只在一个线程中使用事件驱动架构(无法调度新到达的动画),是吗?在这种情况下,任何人都可以建议我一个解决方案: - )....提前致谢

0 个答案:

没有答案