2015-08-08 111 views
0

我正在開發一款遊戲。在我的遊戲中,我有一個對話框來關閉和恢復遊戲。我想要的是當我按下對話框的「否」按鈕,然後開始從3到0計數,然後恢復遊戲。 請告訴我如何在遊戲屏幕中心以透明文本視圖實現CountDown計時器,以及在3秒後計時器不可見。 請通過編輯我的代碼來解決我的問題。 這裏是我的AlertDialogCountDown計時器在遊戲屏幕中央顯示透明textview

public boolean onKeyDown(int keyCode, KeyEvent event) { 

if (keyCode == KeyEvent.KEYCODE_BACK) { 


    GamePanel.thread.setRunning(false); 
    // in the next line of code we also style the dialog through xml which i put in styles 
    AlertDialog alertDialog = new AlertDialog.Builder(this,R.style.myBackgroundStyle).create(); 
    alertDialog.setTitle("Exit Alert"); 
    alertDialog.setMessage("Do you really want to exit the Game?"); 
    alertDialog.setButton("Yes", new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int which) { 
      //Best way is firstly use finish() and after that use System.exit(0) to clear static variables. It will give you some free space. 
      // A lot of applications leave working processes and variables what makes me angry. After 30 minutes of using memory is full and i have to run Task Manager - Lvl 2 clear memory 
      finish(); 
      System.exit(0); 
      return; 

     } }); 
    alertDialog.setButton2("No", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 




      GamePanel.thread.setRunning(true); 
      return; 
     }}); 
    alertDialog.show(); 

    return true; 
} 
return super.onKeyDown(keyCode, event);} 

任何幫助,將不勝感激的代碼。謝謝!

回答

0
final TextView tv = new TextView(this); 
    final PopupWindow popupWindow = new PopupWindow(tv, ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT,true); 

    popupWindow.showAtLocation(getCurrentFocus(), Gravity.CENTER,0,0); 
    new AsyncTask<Void,Integer,Void>(){ 
     @Override 
     protected Void doInBackground(Void... voids) { 
      int inc = 3 ; 
      while(true){ 
       publishProgress(inc); 
       inc -- ; 
       if(inc == 0){ 
        break; 
       } 
       try { 
        TimeUnit.SECONDS.sleep(1); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 

      } 
      return null; 
     } 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      popupWindow.dismiss(); 
      GamePanel.thread.setRunning(true); 
     } 

     @Override 
     protected void onProgressUpdate(Integer... values) { 
      super.onProgressUpdate(values); 
      tv.setText(values[0]+""); 

     } 
    }.execute(); 

這個代碼在你身上怎麼樣button2 onclicklistener?這個想法,可能有一個錯誤。希望可以幫助你。

+0

當我按下我的「否」按鈕遊戲被卡住,沒有響應。 –

+0

popupwindow是否顯示?如果你不使用asynctask,遊戲是否響應? – xxxzhi

+0

不,沒有彈出窗口。當我按下對話框的「否」按鈕時,我的遊戲剛剛停止並且沒有響應。如果您對我的問題有任何想法,請編輯我的代碼謝謝。 –