Цель-C: Проблема с CGRect .frame пересекается / содержит - PullRequest
1 голос
/ 07 октября 2010

У меня есть два UIImageView, расположенных по центру горизонтального экрана, и когда пользователь нажимает кнопку, другой UIImageView, расположенный вне экрана, скользит справа. Я просто пытаюсь определить, когда изображение, выводимое на экран, сталкивается с двумя статическими видами. Проблема заключается в том, что когда я запускаю свой код и проверяю кадры CGRect, они возвращаются из того места, где начинаются, а не заканчиваются представления, независимо от того, где я размещаю вызовы фреймов в моем методе или даже если я размещаю их вне метода в отдельном. Я немного новичок в Obj-C, и я понимаю, что Core Animation работает в отдельном потоке, и я предполагаю, что именно поэтому я получаю начальные значения. (Поправьте меня, если я здесь не прав).

Итак, я предполагаю, что вопрос в том, как обнаружить столкновения, когда один элемент статичен, а другой анимирован. Вот мой код (не стесняйтесь его чистить):

- (IBAction)movegirl 
{ 

   //disabling button
   self.movegirlbtn.enabled = NO;

   //getting graphics center points
   CGPoint pos = bushidogirl.center;
   CGPoint box1 = topbox.center;
   CGPoint box2 = bottombox.center;

   //firing up animation
   [UIView beginAnimations: nil context: NULL]; 
   //setting animation speed
   [UIView setAnimationDuration:2.0    ];

   //setting final position of bushidogirl, then resetting her center position
   pos.x =  260;
   bushidogirl.center = pos;

   //running animations
   [UIView commitAnimations];

   //playing gong sound
   [self.audioplayer play];

   //enabling button
   self.movegirlbtn.enabled = YES;


   [self collisiondetection: bushidogirl : topbox];
}

- (void)collisiondetection:(UIImageView *)item1 : (UIImageView *)item2 
{

   CGRect item1frame = item1.frame;
   CGRect item2frame = item2.frame;

   NSLog(@"Item1 frame = %d and Item 2 frame = %d", item1frame, item2frame);
}

1 Ответ

4 голосов
/ 07 октября 2010

Как насчет:

if (CGRectIntersectsRect(item1frame, item2frame))
{
   // collision!!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...