2016-01-13 7 views
0

Я пишу игру с тремя кнопками, для левого, правого движения и прыжка.Обработка ввода с использованием мультитача Android

Предположим, я нажимаю правую кнопку для перемещения символа, который обрабатывается MotionEvent.Action_Down. При сохранении основной (правой) кнопки нажмите кнопку перехода, которая обрабатывается MotionEvent.Action_Pointer_Down. Теперь я освобождаю кнопку перехода, которая должна перемещать элемент управления до Action_Pointer_Up, но я все равно хочу, чтобы мой персонаж двигался вправо, когда правая кнопка не была выпущена, но я не знаю, как с этим справиться. Первоначально я думал, что управление снова переместится на MotionEvent.Action_Down, но это не работает.

Может кто-нибудь, пожалуйста, помогите мне здесь?

ответ

2

При обработке событий касания в Android обработчик onTouch уведомляет вас об изменениях состояния. Он не посылает все состояние обнаруженных касаний, вместо этого вы должны отслеживать информацию, о которой вы заботитесь.

Когда обнаружено касание, событие Action_Down отправляется, как вы видите. Это начало набора сенсорных событий, но будет означать только событие с одним касанием. После этого все новые обнаруженные пальцы появятся как Action_Pointer_Down, как вы также видели. У каждой точки касания будет свой собственный идентификатор на время его касания, поэтому вы можете сказать в будущем, что прикосновение переместилось туда, где вам нужны события Action_Move. По мере того как события касания идут, вы увидите Action_Pointer_Up. Это скажет вам, какое событие касания осталось (что может быть первым). Когда последний штрих исчез, срабатывает Action_Up. В этот момент ничто не касается экрана.

Для вашего случая, что вы видите, то, что вы ожидаете от приведенного выше. Когда прыжок удаляется, срабатывает Action_Pointer_Up. Все, что вам нужно сделать, это проверить, что касание прыжка было удалено, и оставить символ для перемещения вправо. Вы не увидите больше событий для правильного сигнала перемещения, если пользователь не пошевелил пальцем или не поднял его.

+0

спасибо! .. Я постараюсь заставить его работать –