在播放GIF时Thread.sleep

时间:2016-07-03 02:50:59

标签: java multithreading paint

我试图制作游戏,并且有一个点数按钮。单击“信用”按钮时,会出现一个gif并向下滚动,就像电影结束时的信用一样。 GIF持续10.25秒。我试图在GIF结束时绘制一些东西,但检测它的唯一方法是通过执行Thread.sleep(10250);然后绘制它。但是,Thread.sleep正在暂停gif,然后在10秒后恢复它。 以下是相关代码:

public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        if(onFrontPage == true){
            g2.drawImage(frontpage, 0, 0, this);
        }
        if(credits == true){
            g2.drawImage(creditsgif, 0, 0, this);
        }
        if(aftercredits == true){
            g2.drawImage(creditsimg, 0, 0, this);
        }
    }



    // Checks credits button
    if(e.getX() > 549 && e.getY() > 458 && e.getX() < 749 && e.getY() < 534){
        credits = true;
        onFrontPage = false;
        repaint();
        try {
            Thread.sleep(10250);
        } catch (InterruptedException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        credits = false;
        aftercredits = true;
        repaint();

    }

我试图绘制图像&#34; creditimg&#34;在gif完成之后,但线程睡眠在开始时将gif暂停10秒然后启动gif。如何让Thread.sleep在后台运行,这样它就不会干扰gif?

1 个答案:

答案 0 :(得分:0)

if(credits == true){
  Thread th=new Thread() {
    public void run() {
      g2.drawImage(creditsgif, 0, 0, null);
    }
  };
  th.start();
}

您可能必须将一些变量设为final或在线程的构造函数中传递它们。