#ios #objective-c
#iOS #objective-c
Вопрос:
Я создаю игру, в которой я хочу обнаружить столкновение между UIImageViews, я добавляю все UIImageViews в массив, и есть еще одно изображение мяча, который подпрыгивает по экрану. Я не могу обнаружить столкновение между теми UIImageViews, которые я добавил в массив (self.myViews), и UIImageView шара, который я добавил в раскадровку. Я не могу понять проблему.
- (void) performAnimation {
int widht;
int heigh;
for (UIView * obj in self.myViews){
[obj removeFromSuperview];
}
[self.myViews addObject:self.Ball];
[self.view addSubview: self.Ball];
for (heigh = 30; heigh < 200; heigh = heigh 40) {
for (widht = 35; widht < 300; widht = widht 40) {
UIImageView *image0 =[[UIImageView alloc] initWithFrame:CGRectMake(widht,heigh,20,10)];
image0.image=[UIImage imageNamed:@"gruener-balken.png"];
[self.view addSubview:image0];
[self.myViews addObject:image0];
}
}
}
- (void)BallMovement {
for (UIImageView *obj in self.myViews) {
if (CGRectIntersectsRect(obj.frame, _Ball.frame)) {
//something happens here
}
}
}
Я хочу динамически создавать UIImageViews и добавлять их в изменяемый массив (myViews). Затем я хочу обнаружить столкновение между этими UIImageViews в массиве и ImageView, которые я создал в раскадровке (_Ball.frame). Проблема в том, что столкновение не обнаружено, и шар перемещается за видами изображений из цикла.
Комментарии:
1. И вы проверили, что ваш код вызывается? И регистрировали кадры?
2. Где этот код обнаружения? В приложениях Cocoa нет метода tick() , который запускается каждый кадр, поэтому вам нужно будет запускать его в рамках метода, управляемого таймером…
3. Apple представила UICollisionBehavior в iOS 7. Взгляните на этот каталог developer.apple.com/library/ios/samplecode/DynamicsCatalog /…
4. Вызывается второй цикл, но точка останова в операторе if не имеет никакого эффекта. Но я понятия не имею, почему.
5. Я также не уверен, зачем вам нужно
self.myViews
, учитывая, что вы можете просто перечислить подвидыself.view
. Кроме того, код, которыйremoveFromSubview
находится рядом с верхним, не удаляет представления,self.myViews
и, наконец, всегда должно быть столкновение, с которым оно будет сравниватьсяself.Ball
self.Ball
…