2015-11-29 24 views
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中排队事件并在游戏的更新方法中处理它们。但是,如预期的那样,这会在处理队列中的项目后清除队列时导致并发修改异常。

我将不胜感激关于如何使排队系统工作或任何其他方法做任何帮助。

回答