UIImageView анимация после действия? - PullRequest
0 голосов
/ 22 июля 2011

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

Здесь вы можете увидеть часть кода, как она есть сейчас:

- (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;
}

1 Ответ

2 голосов
/ 22 июля 2011

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...