Это не автоматическое, но вот решение, которое вы можете попробовать, которое включает в себя небольшую настройку и код. Не должно быть слишком сложно.
Проверьте местоположение касания в вашем слушателе событий, проверив параметры event.x
и event.y
. Вы можете сделать это эффективным, создав таблицу, которая имеет значения для самого левого и самого правого значения x для каждой полосы, например, 10 пикселей от верхней части до конца вашего объекта. Например, рассмотрит эту гору:
Используйте у координаты нижней части каждого светло-голубого прямоугольника в качестве индекса в таблицу, и загрузить левые х и правый 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
.
Спасибо за предложение JeffK. Однако я надеялся избежать такого решения, поскольку для создания таблиц было бы ручным трудом. Цель состоит в том, чтобы где-то рядом с 40 горными хребтами, такими как выше, с существенным размером в моем приложении. Я боюсь, что это может быть еще одна из тех функций, которые нужны для Ansca. Но я уверен, что они слышали это раньше. – Amoxus