【问题标题】:Handling MotionEvent on game thread在游戏线程上处理 MotionEvent
【发布时间】: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


    【解决方案1】:

    如果我正确理解了您的问题,那就是架构问题。您需要使用SurfaceView。探索此材料:http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/ 有一个你需要的例子:

    有用的材料还在这里: View vs SurfaceView for android game

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多