簡體   English   中英

如何制作計時器?

[英]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()方法。

請參見javax.swing.Timer以及如何使用擺動計時器

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM