Это не автоматически, но вот решение, которое вы можете попробовать, которое включает в себя небольшую настройку и код.Не должно быть слишком сложно.
Проверьте местоположение касания в слушателе событий, проверив параметры event.x
и event.y
.Вы можете сделать это эффективным, создав таблицу, в которой есть значения для крайнего левого и крайнего правого значения x для каждой полосы, скажем, 10 пикселей от верха до низа вашего объекта.Например, рассмотрим эту гору:
Используйте координату y нижней части каждого светло-синего прямоугольника в качестве индекса в таблице и загрузите левые значения x и справа y вэту запись, например:
hitTable[120] = {245,260}
hitTable[130] = {230,275}
и т. д. *
Затем в обработчике событий касания принудительно установите параметр event.y
для одного из индексов таблицы, либо с помощьюфункция или просто тестирование, чтобы увидеть, к чему это ближе всего.Затем, используя эту запись таблицы, посмотрите, находится ли event.x
между координатами x, которые вы указали для этой координаты y.Если нет, просто проигнорируйте касание.
Вы даже можете построить таблицу и назначить ее в качестве свойства самого изображения, например:
hitTable = {}
hitTable[120] = {245,260}
hitTable[130] = {230,275}
... and so on, then ...
myMountain.hitTable = hitTable
Как только вы это сделаете, выможет получить доступ к таблице в приемнике событий касания как event.target.hitTable
.