[英]How can I make a timer?
我有以下代碼:
if (main.isGoingLeft1)
{
g.drawImage(playerLeft1,x,y,null);
main.isGoingLeft2 = true;
}
我試圖在其中放置一個Thread.sleep
,但是它會停止整個游戲,所以這不是一個好主意。
我想在drawImage
和將boolean
設置為true之間放置一個計時器。 因此,如果您可以告訴我或告訴我如何制作計時器,那將非常棒。
您需要使用javax.swing.Timer
進行動畫處理。
Timer t=new Timer(2,new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
// your animation code
}
});
t.start();
上面的計時器每2毫秒執行一次,即每2毫秒觸發一次ActionEvent
。 如果要停止它,可以使用t.stop()
方法。
Hummm,僅基於您的那部分代碼,似乎無法正常工作。 要使用諸如swing定時器或java util定時器之類的定時器,將需要您的程序中有線程。
使用線程,將有並行運行的代碼,您可以准備一些類以接收來自計時器的信號,然后采取一些措施。
在顯示的這段代碼中,您似乎希望某些事情發生在某些其他事情之后,但要經過一些延遲。 並且您希望您的程序繼續處理其他內容,但是似乎沒有任何跡象表明您的代碼已准備好並行運行。
為此,您將有一個線程負責goingLeft1,另一個負責goingLeft2,它們將通過消息進行通信,而不僅僅是直接設置屬性。
是的,由Java技術人員正確地說,您可以在基於Swing的應用程序中使用Swing計時器,而不是使用java.util.Timer ..在這里使用Swiing計時器的好處是您不需要創建單獨的線程來執行計時器。 您的代碼凍結X毫秒,因為它在整個代碼運行所在的同一線程上運行。 如果您想顯示經過的時間(以秒為單位),則可以使用如下所示的內容
計時器計時器=新計時器(1000,新ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
endTime=System.currentTimeMillis();
tempTime=(int)((endTime-startTime)/1000);
if(tempTime>30)
{
timer.stop();
displayResult();
}
someLabel.setText("Time left : "+(30-tempTime)+" seconds");
}
}
此代碼顯示30秒后的剩余時間(30,29,28 ... 1),然后停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.