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,因爲它不是最終的?
幫助深表感謝!
謝謝,試了一下..它的工作原理。我將如何實現它,總是隻有一個可運行的實例在運行?在我目前的實現中,我發現runnable運行了4或5次,因爲對象正在進入該區域。如果我將該對象拖到區域外,則將計數設置爲false,停止所有4或5個實例。您是否有關於如何啓動一個的建議? – 2012-03-19 13:47:31
創建一個全局布爾變量,它將指示runnable是否已在運行。例如:if(!isRunning){//開始新的runnable,isRunning = true;當可運行時,他的工作開關正在運行到假} – 2012-03-19 13:55:45
Woops .. ofcourse。謝謝。我甚至可以使用count布爾值。咄。 – 2012-03-19 14:27:59