2013-04-08 2 views
0

Мне нужно сделать небольшую игру, где 2 изображения движутся горизонтально на одной линии. Я хочу знать, когда они накладываются друг на друга, чтобы отобразить новое изображение вместо 2.Как узнать текущую позицию перемещения UIImageView?

Каков наилучший способ сделать это?

Way Я думал сделать:

Мне нужно знать позицию несколько во время анимации моих UIImageViews и Попробую с таймером, чтобы обновить ImageView, когда я обнаружил, что 2 imageViews близки.

У меня есть эта функция до сих пор для перемещения изображения:

- (void)moveImage:(UIImageView *)image duration:(NSTimeInterval)duration 
     curve:(int)curve x:(CGFloat)x y:(CGFloat)y 
{ 
    // Setup the animation 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:duration]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 

    // The transform matrix 
    CGAffineTransform transform = CGAffineTransformMakeTranslation(x, y); 
    image.transform = transform; 

    // Commit the changes 
    [UIView commitAnimations]; 

} 

Спасибо вам помочь!

ответ

1

Я думаю, что проверка положения несколько раз в секунду - это не лучший способ сделать это. Если вы можете, вы должны предварительно рассчитать момент времени, когда вид перекрывается!

В любом случае вы не должны использовать affinetransform для перемещения изображения, а просто перемещать рамку изображения, меняя рамку или свойство центра вида!

Если вы не можете предвычислять это, вот несколько советов о том, как реализовать таймер и проверки:

Для реализации таймера вы можете использовать:

 [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(checkPosition:) userInfo:nil repeats:YES]; 

Это будет вызывать функцию каждые 0,1 секунды ,

- (void)checkPosition:(NSTimer *)timer 

В этом методе вы можете получить доступ к imageViews UILayer, чтобы выяснить реальное положение этой точки зрения, называя

CGFrame currentFrame = [imageView.layer presentationLayer].frame; 

Чтобы быть в состоянии сделать это, вы должны импортировать рамки QuartzCore!

+0

Спасибо за комментарий Нильс! –

+0

Я получил доступ к этой должности благодаря этому сообщению: http://stackoverflow.com/questions/3467911/how-do-we-get-the-coordinates-of-an-uiimageview-programmatically –

Смежные вопросы