【问题标题】:Scheduling animations in order按顺序安排动画
【发布时间】:2014-06-09 16:01:46
【问题描述】:

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

【问题讨论】:

  • 我认为这取决于你如何实现你的应用程序(听起来像 MVC)。我的建议:控制器调用方法roll,然后设置模型(片)的新位置。您的 View 是模型的观察者,每次更改都会更新。供人类使用 javax.swing.Timer 查看。

标签: java swing scheduling wait notify


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可能想查看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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 2019-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多