IPHONE - обнаружение, если указатель находится внутри координаты - PullRequest
2 голосов
/ 26 января 2010

У меня есть объект, который можно перемещать по экрану пальцем. Этот объект представляет собой изображение, маленькое изображение, похожее на миниатюру.

На экране у меня есть фоновое изображение, где нарисованы 10 прямоугольников. Эти прямоугольники являются частью фонового изображения. Фоновое изображение тупое, просто UIImageView.

У меня есть 10 звуков, которые я хочу воспроизводить каждый раз, когда миниатюра проходит над одной из 10 областей, представленных 10 прямоугольниками на фоне. У каждой области свой звук.

Все, что у меня есть, это размер переводного эскиза и его координат (таких как начало координат, центр, ширина и высота). У меня есть исходные (х и у) координаты в режиме реального времени.

Суть в том, как определить, находится ли миниатюра перевода над одним из 10 квадратов с учетом определенного допуска (например, + - 10 пикселей), и определить, какая это область?

Проблема: поскольку у меня есть исходные координаты в реальном времени, я всегда могу создать цикл, чтобы проверить, находится ли это значение внутри одного из 10 прямоугольников, но это сильно загружает процессор, поскольку цикл будет выполняться для каждого пикселя, прокручиваемого миниатюрами.

Есть еще идеи, как это сделать?

спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 26 января 2010

Я бы использовал таймер для запуска метода, который проверяет их каждые .2-.5 секунд:

[NSTimer scheduledTimerWithTimeInterval:.2 target:self selector:@selector(checkPointInRects) userInfo:nil repeats:YES];

Используйте touchesBegan, Move, End для кэширования текущих касаний и ссылки на них в методе checkPointInRects. Вы можете использовать CGRectContainsPoint, чтобы определить, лежит ли точка в каком-либо из указанных прямоугольников.

1 голос
/ 26 января 2010

Вы можете опрашивать координаты с заданным интервалом, а не постоянно.

Идея, стоящая за этим, заключается в основном цикле, чтобы отключить (скажем, 1 секунду) таймер. Когда таймер заканчивается, он запускает событие, в котором вы можете узнать текущее местоположение. Затем используйте это значение, чтобы проверить, в каком прямоугольнике он находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...