2010-12-17 29 views
0

我正在爲Android做第一款遊戲,但我遇到了很多困難。對我而言,API在某些方面似乎有點奇怪(例如對話框 - 爲什麼他們必須經歷事件......),但我正在慢慢學習。我應該將我的代碼放在Activity或View中嗎?

但現在,我有點失落。我不確定在哪裏準確地放置我的代碼,我不知道如何弄清楚最佳方式。

我已經做了我自己的View,GameView,它在onDraw事件中進行繪製。我也將大部分代碼放入GameView中。例如,當您觸摸View(在onTouch事件中)時,我會處理它並執行操作。

但是現在我想要顯示一個標準的對話框,並且我讀取它必須通過一個Activity來完成,使用showDialog和onDialog事件。我有點困惑,我不能直接通過視圖顯示對話框。

所以我開始思考,也許我做這一切都錯了......也許我不應該把所有的代碼放到視圖中,而是把我的代碼放在活動中?當我瀏覽API對話框的例子時,他們只是從XML中獲取按鈕並將事件附加到它們等等,所有這些都在Activiy內部。

我希望我的問題有點清楚。我不確定哪個代碼應該去哪裏,以及如何在活動和(遊戲)視圖之間進行交互。

回答

0

很難說你的設計是否好,但我不會太擔心。

LunarLander示例在Activity(僅基本創建菜單)中的代碼非常少,並且大部分遊戲邏輯確實在View中執行。當然,如果你想要一個響應式遊戲,你應該儘可能減少onDraw()方法本身。

0

您應該創建一個帶佈局的xml。它將包含GameView,它將會知道它所顯示的活動。所以,當你檢測到前。觸摸事件在你的GameView中,你將能夠詢問活動來顯示對話框。看到的概念:

public void MyActivtiy extends Activity { 

    @Override 
    public void onCreate() { 
    // your initialization 
    GameView view = (GameView) findViewById(R.id.gameView); 
    view.setCalledActivity(this); 
    } 

} 

public GameView extends View { 
    private Context context; 

    public void setCalledActivity(Context context) { 
    this.context = context; 
    } 

    @Override 
    public void onTouchEvent(...) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setMessage("Are you sure you want to exit?") 
    .setCancelable(false) 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      MyActivity.this.finish(); 
     } 
    })  ; 
    AlertDialog alert = builder.create(); 
    alert.show(); 
    } 
} 
+0

那麼,我將不得不從視圖中調用showDialog方法,並處理Activity中的onDialog事件,將代碼分開? – pbean 2010-12-17 11:52:29

+0

查看更新的答案。您不需要任何onDialog事件來創建對話框。 – 2010-12-17 11:56:11

+0

API文檔指出,如果您管理自己的對話框,則必須確保釋放資源等,以免泄漏對話框和/或視圖,並且如果您通過onDialog事件管理它,Android會自動爲您完成。 – pbean 2010-12-17 12:08:11

相關問題