我正在尝试制作一款游戏,并且有一个积分按钮。当你点击字幕按钮时,就会出现一个动图,并向下滚动,就像电影结尾的字幕一样。GIF持续10.25秒。当GIF结束时,我试图画一些东西,但检测的唯一方法是执行Thread.sleep(10250);然后画出来。然而,线程。睡眠是暂停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();
}
我试图在gif完成后绘制图像"creditsimg",但线程睡眠在开始时暂停gif 10秒,然后开始gif。我怎样才能使线。睡眠在后台工作,这样就不会干扰gif了?
if(credits == true){
Thread th=new Thread() {
public void run() {
g2.drawImage(creditsgif, 0, 0, null);
}
};
th.start();
}
你可能需要把一些变量设为final或者在线程的构造函数中传递它们