렌더링 스레드 ( Canvas
/ 사용 OpenGL ES
, Canvas
설정하기가 조금 더 쉽습니다)와 게임 로직을 넣는 게임 스레드를 사용하는 것이 좋습니다.
실제로 게임을 "로드"하기 위해 GameEngine 클래스를 만들어 응용 프로그램의 중심점으로 만들 수 있습니다. 렌더러가 준비되면 GameEngine 인스턴스에 대한 콜백을 생성 Runnable
하여 렌더링 및 Runnable
게임 로직에 대한 두 개의 스레드를 사용하여 두 개의 스레드를 생성하고 시작 합니다.
샘플 코드 :
응용 프로그램 시작
private GameEngine engine;
private CanvasRenderer renderer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create instances of your two Runnable classes and pass that into
// the GameEngine constructor.
// Create an instance of the game engine.
engine = new GameEngine(canvasRunnable, gamelogicRunnable);
renderer = new CanvasRenderer(this, engine);
setContentView(renderer);
}
CanvasRenderer
private GameEngine engine;
// Save your instance from the GameEngine reference in your constrcutor and make
// a global initializion for your GameEngine instance.
@Override
public void surfaceCreated(SurfaceHolder holder) {
// One time setup here.
// When your view is ready, make this callback to the
// GameEngine.
engine.surfaceIsReady();
}
게임 엔진
private Thread canvasThread;
private CanvasRunnable canvasRunnable;
// You should be able to figure out how to create a second thread
// where you should put your game logic. :)
// Constructor stuff like creating instances of your threads
// and passing references as you wish to those.
// Don't start the threads here.
// Remember to set references from your Runnable's into your Thread's
// instances here!
/**
* Callback. Now your renderer is ready and you
* can start your threads.
*/
public void surfaceIsReady() {
thread.setName("Canvas");
thread.start();
// Same for game logic.
}