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

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

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


person Naresh Kaushik    schedule 11.01.2012    source источник


Ответы (1)


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

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

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

person Jong    schedule 11.01.2012