我已经完成了一个功能性Android游戏的编程,但我不知道在哪里修复触摸延迟:无论何时触摸屏幕,帧速率都会降低一半。我的代码基本上是带有onTouchEvent的LunarLander的复制和粘贴。
谷歌搜索向我展示了他们说工作但却没有的基本解决方法(睡在onTouchEvent,onDispatchEvent,onInterceptTouchEvent,同步等),看起来在触摸事件期间没有使用SurfaceView是不可能的。
我该怎么办?我应该放弃SurfaceView,禁用onTouchEvent并使用clickListener,以某种方式阻止快速触摸调用?请告诉我出了什么问题!
我试过了:
这是我的代码:
public class Surface extends SurfaceView implements SurfaceHolder.Callback {
public CanvasThread canvasThread;
private SurfaceHolder surfaceHolder;
public Surface(Context context) {
super(context);
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
setFocusable(true);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return canvasThread.touch(event);
}
class CanvasThread extends Thread {
@Override
public void run() {
synchronized (this) {
// game logic
}
}
public boolean touch(MotionEvent event) {
// touch logic
}
}
}