getObjectsUnderPoint пару лет назад работал с допустимым минимумом багов, только если его брали у stage.
Т.е. вызываем getObjectUnderPoint у stage, а координаты переводим с помощью localToGlobal/globalToLocal
Ещё при этом лажает на объектах, использующих scrollRect.
Ещё (это уже не баг), если в прямоугьльниках есть вложенные элементы и они попали под мышь - в массиве сами прямоугьльники будут отсутствовать. Т.е. необходимо проверять родителей (и возможно их родителей, и возможно рекурсивно) объектов в этом массиве getObjectsUnderPoint().
А вообще, если объект закрыт другим и они все лежат в одном контейнере (а не один в другом) - то MOUSE_CLICK через верхний до нижнего не дойдет (dimarik уже сказал),
ROLL_OVER и ROLL_OUT так же будут учитывать перекрытия - т.е. может вообще не нужно ничего специально делать, а просто использовать события, которые уже есть в нативном API?