1
我正在开发一款android游戏,并使用以下方法将视图上捕获的MotionEvents传递给游戏进行处理。在游戏线程上处理MotionEvent
@Override
public boolean onTouchEvent(MotionEvent event){
game.input(event);
return true;
}
游戏进行更新,并通过视图#的onDraw方法得出:
@Override
public void onDraw(Canvas canvas){
game.update();
game.draw(canvas);
this.invalidate();
}
如你所知,Android的处理输入和呈现在单独的线程所以MotionEvent可以传递给游戏的同时它正在渲染帧或更新逻辑之后。这不适合我在游戏中处理输入的方式。
我已经尝试在ArrayList中排队事件并在游戏的更新方法中处理它们。但是,如预期的那样,这会在处理队列中的项目后清除队列时导致并发修改异常。
我将不胜感激关于如何使排队系统工作或任何其他方法做任何帮助。