【问题标题】:Java Wait FunctionJava 等待函数
【发布时间】:2011-05-19 06:30:22
【问题描述】:

我想知道你们是否可以帮助我。我正在尝试使用 Java 的内置图形模块制作动画程序...问题是,Java 一次执行所有内容;不同动画之间没有任何时间。最终产品只是最后一张照片。我需要一个在每张图片之间放置半秒的功能。

感谢任何帮助。

规格:Blue-J,JDK 6。

编辑:顺便说一句,我是 Java 新手,这是一门课。任务是制作动画,然后按“c”前进每一帧,但我认为那有点像贫民窟,所以我想要更好的东西。

【问题讨论】:

    标签: java function time delay wait


    【解决方案1】:

    创建一个javax.swing.Timer,每X毫秒执行一次,每次触发时绘制一帧。

    这是来自 javadoc 的示例:

      int delay = 1000; //milliseconds
      ActionListener taskPerformer = new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
              //...Perform a task...
          }
      };
      new Timer(delay, taskPerformer).start();
    

    修改延迟,例如20 毫秒。如果您的绘画时间不会太长,这将为您提供大约 50 帧/秒的速度。

    【讨论】:

    • 我是 java 的大新手。但我会尝试理解这一点。我是否只是将其设为一个新函数,然后将其放入生成动画的 while 循环中?
    • 哦,没关系,我想我看到了。所以我会把循环放在代码块中,上面写着“执行任务”...对吗?
    • 你不应该有一个while循环来制作动画。您需要更改代码,使其仅绘制动画的一帧。上面的代码应该会触发绘图,每次绘图都会绘制下一帧。
    【解决方案2】:

    也许一个简单的睡眠对你来说可能就足够了?

    Thread.sleep(milliseconds);
    

    【讨论】:

    • 在处理动画时,睡眠不太可能是正确的答案。让 EDT/AWT 线程休眠会冻结 UI,然后 EDT/AWT 线程将被阻止处理事件。
    【解决方案3】:

    改变你的 public static void main(String[] args){ public static void main(String[] args) throws InterruptedException { 并在该方法中输入 Thread.sleep(milliseconds you want);

    【讨论】:

      猜你喜欢
      • 2019-12-12
      • 2023-03-13
      • 1970-01-01
      • 2021-09-23
      • 2017-12-26
      • 1970-01-01
      • 2019-06-16
      • 2018-02-03
      • 2020-06-10
      相关资源
      最近更新 更多