按顺序安排动画

时间:2014-06-09 16:01:46

标签: java swing scheduling wait notify

我正在用骰子和移动的棋子进行游戏。我想要的是骰子滚动,然后在骰子完成滚动后,我希望这件作品能够移动。我目前有骰子完成滚动时骰子对象告诉该棋子开始移动然而我想要一个控制器告诉骰子移动并等待它们完成然后告诉该棋子移动。我尝试过使用.wait()和.notify()但我真的不知道如何使用它们并最终得到一个InterruptedException。实现这个的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

将一个javax.swing.Timer用于骰子,另一个用于该骰子;在骰子处理程序中,当您确定骰子已完成时,启动计件计时器。审查了几个例子here

答案 1 :(得分:0)

您可能希望看到How to Pause and Resume a Thread in Java from another Thread

似乎你不能使用任何其他方式,但海报建议那里,暂停一个线程。他使用变量来知道何时运行或暂停。例如:

public class Game
{
    static Thread controller, dice;
    static boolean dicerunning = false;

    public static void main(String[] args)
    {
        controller = new Thread(new Runnable()
        {
            public void run()
            {
                dicerunning = true;
                dice.start();
                while (dicerunning)
                {
                    //blank
                }

                //tell piece to move here
            }
        });

        dice = new Thread(new Runnable()
        {
            public void run()
            {
                //roll here

                dicerunning = false;
            }
        });

        controller.start();
    }
}