проблема столкновения двух изображений - PullRequest
0 голосов
/ 28 июня 2011

Вот мой код:

-(void)collision {
    if(CGRectIntersectsRect(ball.frame,center.frame)) {
        center.alpha=0.1;
    }
}

-(void)viewDidLoad {
    [super viewDidLoad];
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:7.0f];
    [ball setCenter:CGPointMake(200, 100)];
    [UIView commitAnimations];
    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(collision) userInfo:nil repeats:YES];
}

Моя проблема в том, что когда viewDidLoad "center.alpha = 0.1", но "center" и "ball" еще не столкнулись, я не знаю почему, я думаю, это связано с анимацией.

Ответы [ 2 ]

1 голос
/ 28 июня 2011

Хотя анимация занимает 7 секунд, [ball setCenter:CGPointMake(200, 100)]; устанавливается немедленно, и поэтому - (void)collision, вероятно, устанавливает альфа на 0,1, прежде чем "шар" пересекается с "центром" в анимации.

Вместо анимации UIView вы можете использовать NSTimer для медленного изменения центра "шара".

0 голосов
/ 28 июня 2011

Вы планируете вызов коллизии через 0,01 секунды после выполнения строки в конце viewDidLoad. Но представление еще не отображалось, поэтому для его отображения может потребоваться больше 0,01 секунды.

Попробуйте viewDidAppear

Сказав это, я думаю, вы не совсем понимаете цель анимации в iOS. Они не предназначены для расчета обнаружения столкновений - они просто предназначены для перемещения объектов из начальной точки в конечную точку в течение установленного времени Я бы посоветовал вам прочитать документы Apple по системе анимации.

...