2011-07-22 3 views
0

У меня проблема с настройкой анимации. Первое изображение начинается с анимации, и когда вызывается playound1, начинается вторая анимация. Все работает отлично, но сейчас, когда вторая анимация останавливается, анимация не происходит. Поэтому то, что я хочу сделать, - это после того, как вторая анимация остановится - сначала начнется все сначала - затем снова, когда вызывается метод для воспроизведения второй анимации. Любые намеки?UIImageView анимация после действия?

Здесь вы можете увидеть часть кода, как это прямо сейчас:

- (void)loadtest1 { 
    NSArray *imageArray = [[NSArray alloc] initWithObjects: 
          [UIImage imageNamed:@"test1.png"], 
          [UIImage imageNamed:@"test2.png"], 
          [UIImage imageNamed:@"test3.png"], 
          [UIImage imageNamed:@"test4.png"], 
          nil]; 

    test1.animationImages = imageArray; 
    test1.animationRepeatCount = 0; 
    test1.animationDuration = 1; 

    [imageArray release]; 
    [test1 startAnimating]; 
} 

- (void)loadtest2 { 
    NSArray *imageArray = [[NSArray alloc] initWithObjects: 
          [UIImage imageNamed:@"test4.png"], 
          [UIImage imageNamed:@"test5.png"], 
          [UIImage imageNamed:@"test6.png"], 
          [UIImage imageNamed:@"test7.png"], 
          nil]; 

    test2.animationImages = imageArray; 
    test2.animationRepeatCount = -1; 
    test2.animationDuration = 1; 

    [imageArray release]; 
    [test2 startAnimating]; 
} 

- (IBAction)playsound1 { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"]; 
    AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    theAudio.delegate = self; 
    [theAudio play]; 
    test1.hidden = 0; 
    test2.hidden = 1; 
    [test1 startAnimating]; 
    test2.center = test1.center; 
} 

ответ

2

Если я вас правильно понимаю, что вы пытаетесь сделать, это повторно начать свою первую анимацию, когда вторая отделка

Правильный способ справиться с этим - через CABasicAnimation, который позволяет указать делегата, метод – animationDidStop:finished: вызывается, когда анимация выполнена.

Если вы не хотите, таким образом, своего рода обходной путь заключается в следующем: в loadtest2, после запуска анимации, наметьте способ исполнения с задержкой:

[self performSelector:@selector(loadTest1) withObject:nil afterDelay:1.0]; 

это будет (более или меньше) работают удовлетворительно, потому что вы знаете, как долго ваша анимация будет длиться. Итак, когда анимация должна быть завершена, выполняется loadTest1, и первая анимация начинается снова.

+0

Я пробовал и таким образом: [self performSelector: @selector (loadTest1) withObject: nil afterDelay: 1.0]; и он не работает. Я должен пробовать другой путь и посмотреть, что я могу получить. Большое спасибо. – ftwhere

+0

вы бы поставили инструкцию NSLog в 'loadTest1', чтобы проверить, что она вызывается, когда заканчивается вторая анимация? – sergio

+0

Теперь он работает. Я сделал другой метод для просмотра изображений только без звука, и он работает просто отлично, спасибо за подсказку. – ftwhere

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