Получение соответствующего сенсорного события на нескольких спрайтах в игре с помощью andengine - PullRequest
0 голосов
/ 11 января 2012

я делаю игру, используя андроид в андроиде, в этой игре различные спрайты (яйца) перемещаются здесь и там на экране. Я хочу получить событие касания каждого спрайта независимо, иногда, когда один спрайт находится над другим, затем onAreaTouched ( ) дать событие касания обоих спрайтов, в случае, когда я возвращаю здесь false или super.onAreaTouched (), если я возвращаю здесь true, то спрайт, перемещающийся по области, которая зарегистрирована для другого спрайта, не может дать событие касания

Итак, что является подходящим способом получить событие касания только верхнего показанного спрайта.

1 Ответ

1 голос
/ 11 января 2012

Другой подход, который вы можете использовать, - это IOnSceneTouchListener с методом onSceneTouchEvent. Вы можете получить X & Y из параметра pTouchEvent и проверить, содержит ли его какой-либо спрайт.

Теперь, если вы не знали, у каждой сущности есть список детей (а ваша сцена - сущность). Когда сущность рисует сама, она также вызывает методы рисования дочерних элементов. Методы рисования детей вызываются от первого дочернего метода до последнего (как их порядок в списке); Поэтому первый ребенок в списке рисуется первым. Последний рисуется последним. Так что последний всегда будет перекрывать любые другие объекты, на которые он опирается.

Итак, перебираем список детей сцены от последнего до первого. Если какой-либо спрайт содержит точку касания, пусть он обрабатывает событие и возвращает true , чтобы сообщить, что вы использовали событие.

...