作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为 Android 开发游戏并使用以下方法将在 View 上捕获的 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 中并在游戏的更新方法中处理它们。然而,正如预期的那样,这会在队列中的项目处理完后清除队列时导致并发修改异常。
对于如何使排队系统工作或任何其他方法的帮助,我将不胜感激。
最佳答案
如果我正确理解了您的问题,那是在架构方面。您需要使用 SurfaceView .探索此 Material :http://obviam.net/index.php/a-very-basic-the-game-loop-for-android/您需要一个示例:
有用的资料还在这里: View vs SurfaceView for android game
关于java - 在游戏线程上处理 MotionEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987356/
我是一名优秀的程序员,十分优秀!