Обработка Multitouch на iPhone - PullRequest
       33

Обработка Multitouch на iPhone

0 голосов
/ 14 февраля 2012

Я делаю игру для iPhone с использованием OpenGL.Я столкнулся с проблемой, когда начал писать интерфейс управления игрой.У меня есть четыре кнопки (влево, вправо, атака, прыжок), и мне нужно иметь возможность нажимать и одновременно.То, что мне нужно, это как функция touchesStationary (есть только touchesBegin, Moved и End).Мне нужна функция, которая возвращает все пальцы, которые в данный момент находятся на экране (не имеет значения их текущие фазы), но эти функции возвращаются только тогда, когда я начинаю нажимать, когда я двигаю палец или когда я поднимаю палец ... Нетфункции, когда палец остается на месте, нажимая кнопку.

Я пытался написать код, используя touchesBegin, touchesMoved и touchesEnd, но одна функция возвращает список пальцев, который находится в другом порядке, чем другие,так что он все испортил, и мультитач становится невозможным.

Идеальная функция вернула бы все пальцы, которые в данный момент находятся на экране, тогда я могу перебрать все их, проверяя, соответствуют ли их позиции положению какой-либо кнопки,и затем активируйте эту кнопку.Как мне этого добиться?

1 Ответ

0 голосов
/ 14 февраля 2012

Вы в основном говорите о реализации значительной части функциональности графического интерфейса на основе сенсорного ввода, со всей сложностью, которая приносит. Вам нужно будет внедрить небольшой конечный автомат, который будет отслеживать, что происходит с каждой кнопкой. Например, кнопка запускается в состоянии «не нажата». Если вы обнаружите прикосновение внутри кнопки, она перейдет в состояние «нажата». Когда касания перемещаются (или заканчиваются, или отменяются), вы проверяете, содержит ли кнопка касание. Если этого не произойдет, вы вернетесь в состояние «не нажата». Ваш игровой цикл может проверять состояние кнопки и генерировать события соответственно (например, некоторым кнопкам может потребоваться генерировать события непрерывно при нажатии, в то время как другие генерируют событие одиночного выстрела, когда они отпускаются).

...