请检查link。以下代码来自此链接。我不知道为什么它说我们必须使用线程睡眠来限制触摸事件的数量。 我有一个surfaceview和gamethread来处理触摸事件推送的事件。是否需要睡眠,或者我应该通过控制帧率来处理游戏中的睡眠。
try {
Thread.sleep(16);
} catch (InterruptedException e) {
}
return true;
}
整个代码
@Override
public boolean onTouchEvent(MotionEvent event) {
// we only care about down actions in this game.
try {
// history first
int hist = event.getHistorySize();
if (hist > 0) {
// add from oldest to newest
for (int i = 0; i < hist; i++) {
InputObject input = inputObjectPool.take();
input.useEventHistory(event, i);
gameThread.feedInput(input);
}
}
// current last
InputObject input = inputObjectPool.take();
input.useEvent(event);
gameThread.feedInput(input);
} catch (InterruptedException e) {
}
// don't allow more than 60 motion events per second
try {
Thread.sleep(16);
} catch (InterruptedException e) {
}
return true;
}
答案 0 :(得分:0)
您的链接指向2009年发布的文章,您应该尝试找到更新的文章。
代码本身看起来不对,作者解释说他的代码旨在避免阻塞UI线程,但随后在onTouchEvent()
中调用Thread.sleep(16),这是从UI线程调用并阻止它。 / p>
这个例子怎么样?我还没有详细阅读,但代码看起来要好得多:https://www.codeproject.com/Articles/827608/Android-Basic-Game-Loop