我正在为Android开发游戏,并使用以下方法将视图上捕获的MotionEvent传递给游戏进行处理。
@Override
public boolean onTouchEvent(MotionEvent event){
game.input(event);
return true;
}
使用View#onDraw方法更新和绘制游戏:
@Override
public void onDraw(Canvas canvas){
game.update();
game.draw(canvas);
this.invalidate();
}
如您所知,android在单独的线程上处理输入和渲染,因此MotionEvent可以在渲染帧时或在逻辑更新后传递给游戏。这不适合我在游戏中处理输入的方式。
我已经尝试在ArrayList中排队事件并在游戏的更新方法中处理它们。但是,正如预期的那样,在处理队列中的项目后清除队列时,这会导致并发修改异常。
我很感激有关如何使排队系统工作的任何帮助或任何其他方法。
答案 0 :(得分:1)
如果我正确地理解了你的问题,那就是建筑学。您需要使用SurfaceView。探索此资料:http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/ 您需要一个例子:
有用的材料仍然在这里: View vs SurfaceView for android game