Итак, мы работаем над android-версией игры для iPhone Snake Race (это крутая игра). Тем не менее, мы, кажется, получаем задержку на сенсорных входах, достаточно большую, чтобы изменить ситуацию. (Змея может повернуть на шаг позже, чем вы предполагали) После того, как вы почти привыкли к версии для Android, версия для iPhone выглядит как благословение.
Вопрос в том, есть ли задержка со стороны андроида в вызове метода onTouchEvent ()? (Я использую Samsung Galaxy S2) Если так, есть ли какие-нибудь хитрые уловки, чтобы обойти проблему? (Даже если это означает использование NDK)
Это текущая реализация сенсорной обработки:
public boolean onTouchEvent(final MotionEvent event) {
int action = event.getAction();
if(action == MotionEvent.ACTION_DOWN ||
(action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN){
Run run = GameVars.run;
if(run != null){
if(run.paused){
run.paused = false;
}else{
if(event.getX(action >> MotionEvent.ACTION_POINTER_ID_SHIFT) < GameVars.width/2){
run.addTap(-1);
}else{
run.addTap(1);
}
}
}
return true;
}
return false;
}
Это метод addTap:
public void addTap(int newDir) {
if(newDir == -tapDir){
taps++;
tapDir *= -1;
}
}
И затем проверяется каждый кадр, касание, и, если оно больше нуля (и нам разрешено поворачивать атм), мы поворачиваемся.
Все работает нормально и надежно, но есть постоянная задержка (возможно, 2-3 кадра, что достаточно, чтобы сделать iPhone змею серьезно более маневренным).
Любая обратная связь приветствуется!