«сделать что-то», когда изображение находится рядом с другим - PullRequest
1 голос
/ 02 июля 2011

У меня есть два изображения (изображение1 и изображение2). Изображение 2 движется по экрану. Я хочу "сделать что-то", когда изображение 2 близко (20 пикселей) изображения1. Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 02 июля 2011

Изображение 2 не может двигаться, если что-то в вашем приложении не перемещает его. Найдите в своем коде место, куда вы перемещаете изображение 2, а затем выполните одно из следующих действий или нечто подобное:

  1. Вычислите расстояние до изображения 1 и примите соответствующие меры, если меньше 20 пикселей.
  2. Отправить сообщение объекту, который заботится о расстоянии между изображениями 1 и 2.
  3. Разместите уведомление, сообщающее обо всех объектах, которые заботятся о перемещении изображения 2.
  4. Установите флаг, сообщающий, что изображение 2 переместилось, и убедитесь, что какая-то другая часть вашего приложения периодически проверяет флаг и делает правильные действия.
1 голос
/ 02 июля 2011

Создайте кадр, который добавляет 20 пикселей к каждой стороне кадра вашего изображения1:

CGRect image1Frame = image1.frame;
CGRect collisionFrame = CGRectMake(image1Frame.origin.x-20.0, image1Frame.origin.y-20.0, image1Frame.size.width+20.0, image1Frame.size.height+20.0);

Затем просто проверьте, сталкивается ли кадр изображения2 с collisionFrame:

CGRectIntersectsRect(image2.frame, collisionFrame);
1 голос
/ 02 июля 2011

Вы можете попытаться создать CGRect с текущим размером изображения + 21 пиксель, создать CGRect другого изображения и затем использовать:

 CGRectIntersectsRect(CGRect1, CGRect2)
...