【发布时间】:2015-11-29 19:57:36
【问题描述】:
我正在开发一款安卓游戏,并使用以下方法将视图上捕获的 MotionEvents 传递给游戏进行处理。
@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 中对事件进行排队,并在游戏的更新方法中处理它们。但是,正如预期的那样,这会在队列中的项目处理完毕后清空队列时导致并发修改异常。
我将不胜感激有关如何使排队系统工作或任何其他方法的帮助。
【问题讨论】:
标签: java android multithreading