2012-03-18 20 views
0

我試圖向用戶顯示一個計時器,從3向下計數到0.當用戶在特定位置拖動對象並且應該停止時,應該使此計時器可見並重新設置)當用戶拖動對象的位置..對象在某個範圍內的位置倒計時

現在,我正在與Log.d,計時器的實際顯示,我會處理以後。

到目前爲止,我有(非工作代碼):

public void setX(float x) { 
     isCheckOut = false;    
    // if basket is further than slotmargin 
    if (x + width/2 > SlotManager.SlotmarginX) { 
     // if basket is NOT in CheckOut area  
     if (this.Y < MainGamePanel.height - 80 - height/2){ 
      x = SlotManager.SlotmarginX - width/2; 

     } else { 
      // if basket IS in CheckOut area 
      x = MainGamePanel.width - width/2; 
      isCheckOut = true; 
      GameManager.CheckOut(); 
     } 
     } 

    this.X = x; 
} 

而且,在遊戲管理:

public static void CheckOut() { 

    Thread t = new Thread(new Runnable() { 
     public void run() { 
      while (basket.isCheckOut == true){ 

       for (int i=3;i>3;i--){ 
        final Handler handler = new Handler(); 
        Timer t = new Timer(); 
        t.schedule(new TimerTask() { 
          public void run() { 
            handler.post(new Runnable() { 
              public void run() { 
               Log.d("", "Countdown " + i); 
              } 
            }); 
          } 
        }, 2000); 

       } 

      } 
     } 
    }); 
    t.start();  
} 

我覺得我取得了一些進展,但可以」把我的頭包裹在循環定時器組合中。計時器應該在isCheckOut == false時停止。現在,我想我開始重複計時器...並且我不能使用int「i」來顯示當前的倒計時int,因爲它不是最終的?

幫助深表感謝!

回答

1

更好地使用這種方法:

final int delayMillis = 1000; 

final boolean count = true; 

final Handler handler = new Handler(); 

final Runnable runnable = new Runnable() 
{ 

    @Override 
    public void run() 
    { 

     // your code 

     if (count) // stop timer when count is false 
     { 
      handler.postDelayed(runnable, delayMillis); 
     } 

    } 
}; 

要啓動計時器使用:

handler.postDelayed(runnable, delayMillis); 
+0

謝謝,試了一下..它的工作原理。我將如何實現它,總是隻有一個可運行的實例在運行?在我目前的實現中,我發現runnable運行了4或5次,因爲對象正在進入該區域。如果我將該對象拖到區域外,則將計數設置爲false,停止所有4或5個實例。您是否有關於如何啓動一個的建議? – 2012-03-19 13:47:31

+0

創建一個全局布爾變量,它將指示runnable是否已在運行。例如:if(!isRunning){//開始新的runnable,isRunning = true;當可運行時,他的工作開關正在運行到假} – 2012-03-19 13:55:45

+0

Woops .. ofcourse。謝謝。我甚至可以使用count布爾值。咄。 – 2012-03-19 14:27:59