我在我的第一場比賽的路上,所有的設計和東西都完成了,只剩下編碼。 我已經成功地觀看了有關圖形的信息以及如何在其中創建成功的線程同步的萬維網上的教程。創建一個簡單的,簡單的遊戲引擎
像現在一樣,我有一個SurfaceView類和一個線程類。線程類有這個構造函數來從我的SurfaceView類接收遊戲引擎。從線程類的構造函數 簡單代碼:
public Thread(SurfaceHolder localsurfaceHolder,
Context context,
Handler handler,
SurfacefView localEngine) {
surfaceHolder = localsurfaceHolder;
this.handler = handler;
this.context = context;
engine = localEngine;
}
從surfaceCreated法我SurfaceView類:
thread = new GameThread(getHolder(), context, new Handler(), this);
而且有我的代碼創建表面時將啓動trigging線程。
現在到真實交易。不久我想要一個與視圖完全分離的遊戲引擎。問題是;如何實現這一目標? GameEngine類的構造函數應該如何以及我應該在哪裏放置繪圖/計算方法? GameEngine是什麼?
現在我GameEngine一流的樣子:提前
package com.myname.mygame;
public class GameEngine {
//If im right, a constructor for the engine should be placed here
//How and which parameters shall I change and send with from the view
}
謝謝!
感謝您的回答!我明白我應該把我的init-stuff放在哪裏。 但是,getInstance,是否只是爲了第一次加載東西,當實例爲空?還有一件事,我仍然不明白我必須建立的聯繫,才能以正確的方式觸發和更新對象。我應該如何在線程類中連接我的GameEngine? – Curtain 2010-08-17 21:23:00
第一次調用getInstance()時,它會爲該類的構造函數運行一次,因此對它的任何進一步調用僅使用現有模型。要想連接引擎,只需要訪問模型,只需從您的界面調用getInstance()。或者,當您第一次在界面中存儲對其的引用時,就可以調用它。希望這是有道理的。 – 2010-08-17 21:32:51
我想我現在明白了。然後,我還將必要的計算/繪圖函數放入GameEngine中,然後放入線程類,例如GameEngine.getInstance()。calculateNow();訪問GameEngine的calculateNow()方法。對? – Curtain 2010-08-17 21:46:34