2014-01-02 3 views
0

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

Должен ли я использовать NSTimer или другой таймер?

for (int i = 0; i<[bildr count]; i++) { 
    ... 
    CABasicAnimation *fadeInAnimation; 

    if([[[bildr objectAtIndex:i] objectForKey:@"animation"] isEqualToString:@"fadeIn"]) { 

     greenLeafImageView.alpha = 0.0; 
     fadeInAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
     [fadeInAnimation setToValue:[NSNumber numberWithFloat:1.0]]; 
     fadeInAnimation.fillMode = kCAFillModeForwards; 
     fadeInAnimation.removedOnCompletion = NO; 
     fadeInAnimation.duration = [[[bildr objectAtIndex:i] objectForKey:@"duration"] floatValue]; 
     fadeInAnimation.beginTime = CACurrentMediaTime() + [[[bildr objectAtIndex:i] objectForKey:@"startTime"] floatValue]; 
    }else{ 
     // is sound -> time it 
    } 



    [animArray addObject:fadeInAnimation]; 
    [greenLeafImageView.layer addAnimation:fadeInAnimation forKey:nil]; 
    lastpic=i; 
} 

float totaltime=20.0; 

CAAnimationGroup * group = [CAAnimationGroup animation]; 
group.animations = animArray; 
group.duration = totaltime; 
[self.view.layer addAnimation:group forKey:nil]; 

ответ

0

Короткий ответ, да, NSTimer - путь, который вы должны принять.

Я написал класс для координации звуков с анимацией. Вы можете просмотреть его here on github. Этот класс, MKSoundCoordinatedAnimationLayer, также позволяет вам «сценарировать» анимацию, передавая NSDictionary с соответствующей информацией о изображении, позе, альфе, звуке и времени, что, в свою очередь, позволяет вам настроить/сохранить анимацию в plist, загружать во время выполнения, а не изменять код, чтобы настроить анимацию.

+0

Спасибо за ваш ответ, я попытаюсь использовать NSTimer, как вы делали в своих классах. Спасибо. – lcase