我在我的第一场比赛的路上,所有的设计和东西都完成了,只剩下编码。 我已经成功地观看了有关图形的信息以及如何在其中创建成功的线程同步的万维网上的教程。创建一个简单的,简单的游戏引擎
像现在一样,我有一个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