2013-07-31 68 views
0

我有一個有時間限制的我的機器人問答遊戲。我想要的是有一個選擇按鈕,如果你點擊其中一個按鈕,你將自動地意圖到下一級的課程,但如果你沒有回答或點擊任何按鈕,你將意圖到另一個班級,那就是爲什麼遊戲有時間限制。我的問題是我不知道如何把時間限制,意圖或將您轉移到另一個類自動如果你沒有點擊任何按鈕的選擇。我嘗試了睡眠,但是發生了什麼事情,即使我已經點擊了正確的答案,並且即將進入下一階段的課程,它將睡眠到我喜歡睡覺的課程。請幫我解決我的問題。我也嘗試處理程序,但沒有工作我如何在我的Android遊戲中編碼時間限制

public class EasyOne extends Activity { 

按鈕a,b,c; TextView定時器;

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.easyone); 
    a = (Button) findViewById(R.id.btn_ea1); 
    b = (Button) findViewById(R.id.btn_eb1); 
    c = (Button) findViewById(R.id.btn_ec1); 
    a.setOnClickListener(new View.OnClickListener() { 
    @Override 
      public void onClick(View v) { 
       Toast.makeText(getApplicationContext(),"CORRECT!", 
         Toast.LENGTH_SHORT).show(); 
       Intent intent = new  Intent(getApplicationContext(),EasyTwo.class); 
       startActivity(intent); 
     } 
    }); 
} 

private Runnable task = new Runnable() { 
    public void run() { 
     Handler handler = new Handler(); 
     handler.postDelayed(task, 5000); 
     Intent intent = new Intent(getApplicationContext(),TimesUp.class); 
      startActivity(intent); 

    } 
}; 
+0

處理器是該解決方案是正確的做法,但你只需要稍作調整。添加一個字段變量,用於保存每一輪所需的時間,例如'ROUND_LIMIT = 5',然後在放入'ROUND_LIMIT - '的末尾的任務中,檢查該值何時達到0,然後啓動結束循環意圖,否則如果用戶在啓動正確或不正確的答案意圖之前回答。同樣在這種情況下,您需要將'postDelayed'計時器更改爲'1000'而不是'5000' – kabuto178

+0

您能告訴我病人應該更改和添加的代碼嗎?我真的愛你的幫助。非常感謝你。 「在Android的初學者」 – user2630787

回答

0

您應該使用處理程序,但爲了取消超時,您必須從單擊監聽程序代碼中的處理程序中刪除延遲的消息。

public class EasyOne extends Activity { 

static private Handler mHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     super.handleMessage(msg); 
     if (msg.what == 123) { 
      ((EasyOne) msg.obj).onTimeout(); 
     } 
    } 
}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.easyone); 
    a = (Button) findViewById(R.id.btn_ea1); 
    b = (Button) findViewById(R.id.btn_eb1); 
    c = (Button) findViewById(R.id.btn_ec1); 

    Message msg = mHandler.obtainMessage(123,this); 
    mHandler.sendMessageDelayed(msg,5000); 

    a.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(getApplicationContext(),"CORRECT!", 
        Toast.LENGTH_SHORT).show(); 

      mHandler.removeMessages(123,this); 

      Intent intent = new Intent(getApplicationContext(),EasyTwo.class); 
      startActivity(intent); 

     } 
    }); 
} 

private void onTimeout() { 
    //your code 
} 

}

+0

私人無效onTimeout後(){ – user2630787

+0

我應該編碼這是你把代碼,應該是在超時被觸發時執行。看你的代碼,它會是意圖intent =新的意圖(getApplicationContext(),TimesUp.class); startActivity(intent); –