Как добиться таких же результатов броска на Android и iPhone - PullRequest
2 голосов
/ 11 августа 2011

Я портировал игру с iPhone на Android. Все на основе OpenGL и точно такие же расчеты для прокрутки. Я заметил, что на iPhone при прокрутке игры я могу прокручивать быстрее, и начальная скорость, когда я поднимал палец, ощущалась так же, как и мой палец.

Однако, к сожалению, на устройстве с Android это не так. Когда я прокручивал палец при прокрутке, начальная скорость прокрутки ощущалась медленнее. Прокрутка на iPhone кажется более точной.

Есть ли что-то особенное в том, как андроид обрабатывает прикосновения, которые отличаются от iPhone? и как я могу воспользоваться этим, чтобы добиться такого же ощущения, как на iPhone. На Android все приложения, когда меняют скорость, с которой я поднял палец, не чувствуют то же, что и скорость моего пальца.

Ответы [ 2 ]

2 голосов
/ 12 августа 2011

Я нашел это.Андроид дает ACTION_MOVE, а затем ACTION_UP для того же (или близкого) местоположения.iPhone не делает этого вообще!Это просто дает штрихи!Так что, если есть движение, у меня всегда будет 3 очка на андроиде ВСЕГДА, но на iPhone его 2 очка (приземлиться, подправить оба в разных местах)

Следующая вещь - это ACTION_MOVE AND ACTION_UP donне происходит сразу, и его значительный временной интервал при расчете средней скорости точек выборки.

Решение: на ACTION_UP, если есть ACTION_MOVE, сдвиньте все сохраненные секунды, чтобы ACTION_MOVE «происходило», когдаACTION_UP произошел.Не ставьте последнюю точку в расчете скорости.А теперь вычислите скорость как обычно.

Сводка

В Android, если вы двигаете пальцем, вы получите ACTION_MOVE перед ACTION_UP.И ACTION_UP находится примерно в том же месте в ACTION_MOVE, создавая впечатление, что скорость в конце равна примерно 0. iPhone не делает этого, iPhone не дает прикосновения, перемещенные для последних прикосновений. Закруглено (IE касается вниз, перемещает палец, поднимает, если вы сделаете это достаточно быстро на iPhone, вы не получите промежуточное событие для касаний, проведенных пальцем, где, как на андроиде, вы делаете).

эквивалент Android / iPhone

  1. ACTION_UP =touchesEnded
  2. ACTION_DOWN = touchesBegan
  3. ACTION_MOVE = touchesMoved

Также я заметил, что на Android есть некоторые функции истории точек.Я не использовал их.Я сохранил штрихи и метки времени в своем собственном массиве.

0 голосов
/ 11 августа 2011

Учитываете ли вы разрешение экрана (dpi) или разрешение экрана, чтобы выполнять измерения в точках в секунду или в пикселях в секунду?Это может легко повлиять на вещи.

Кроме того, да, сенсорная обработка Android кажется немного медленнее.Возможно, вы сможете добавить «коэффициент выдумки» некоторой величины, чтобы получить более точный ответ (возможно, + 10% или что-то в этом роде).Но, тем не менее, скорость «бросания» приложений для Android представляет собой комбинацию сенсорного экрана и математических вычислений платформы для определения скорости перемещения и скорости затухания - так что с точки зрения приложений, ДРУГИХ, чем у вас, вы могли бы просто увидеть очень разныематематика / подходы между двумя платформами.

...