Это отличный вопрос, для которого у меня нет готового решения. То, на какую вещь нажимают на переднем плане, является одной из тех вещей, которые вы воспринимаете как должное, когда получаете бесплатно в качестве цели MouseEvent. Самая простая часть - настроить все ваши экранные объекты для прослушивания KeyboardEvent, соответствующего нажатию клавиши пробела, и для проверки нажатия с указанием позиции мыши в это время.
Мне кажется, что остальная ваша проблема, настоящая проблема, сводится к одному определению, которое вам нужно сделать: A и B занимают одно и то же пространство экрана, которое находится впереди. Другими словами, когда у вас есть список всех объектов DisplayObject, для которых hitTest является хитом, вам нужна эта функция сравнения, чтобы отсортировать их спереди назад. Вот как я вижу, что работает:
Чтобы определить, находится ли DisplayObject A перед или позади DisplayObject B, вам необходимо проследить происхождение их списка отображения до их общего предка, а затем посмотреть на следующее поколение вниз от этого, чтобы увидеть, если - в точке где их происхождение расходится - предок объекта A находится перед или позади объекта B (т.е. их относительная глубина в контейнере общего предка). Рассмотрим дерево отображения следующим образом:
E
/ \
C D
/ \
A B
Е - общий предок. Чтобы определить, находится ли A позади B, вам нужно проверить, находится ли C позади D, что означает, что вам нужно проверить глубины C и D в контейнере E (с помощью DisplayObjectContainer.getChildIndex (child)). Очевидно, что в сложном пользовательском интерфейсе общим предком может быть много поколений назад, но он всегда будет, даже если это сцена.
EDIT:
Как я упустил очевидное ?! Вы не хотите нажимать кнопку мыши, но не сказали, что не можете использовать MouseEvents вообще, верно? Используйте событие ROLL_OVER или MOUSE_OVER, чтобы отследить, что вы перевернули, и HitTest с этим объектом [шлепает по лбу в стыде].