首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CAKeyframeAnimation和音频同步

CAKeyframeAnimation和音频同步
EN

Stack Overflow用户
提问于 2011-09-26 22:49:59
回答 1查看 349关注 0票数 1

我正在使用CAKeyframeAnimation在我的应用程序中执行一些动画。我想在播放动画的同时播放音频文件(有时在播放过程中,有时在播放之后)。我如何才能做到这一点?是否有针对CAKeyframeAnimation的AnimationDidStopSelector,或者是否有其他方法来实现此目的?

代码语言:javascript
复制
UIBezierPath *movePath = [UIBezierPath bezierPath];
            [movePath moveToPoint:imageAnimation.center];
            [movePath addQuadCurveToPoint:CGPointMake(839, 339)
                             controlPoint:CGPointMake(671, 316)];

            CAKeyframeAnimation *moveAnim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
            moveAnim.path = movePath.CGPath;
            CAAnimationGroup *animGroup = [CAAnimationGroup animation];
            animGroup.animations = [NSArray arrayWithObjects:moveAnim, nil];
            animGroup.duration = 0.5;
            imageAnimation.layer.position = CGPointMake(839, 339);
            imageAnimation.tag = 0;
            [imageAnimation.layer addAnimation:animGroup forKey:nil];
            break;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 00:04:55

实际上是有的。首先将您自己指定为代理:

代码语言:javascript
复制
animGroup.delegate = self

如果你想使用不同的动画,你可以使用KVC来区分它们:

代码语言:javascript
复制
[yourAnimation setValue:@"firstAnimation" forKey:@"animationName"];

然后实现这个方法

代码语言:javascript
复制
- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
    if (flag && [[anim valueForKey:@"animationName"] isEqualToString:@"firstAnimation"]) {
        //play your sound
    }
    else if (flag && [[anim valueForKey:@"animationName"] isEqualToString:@"secondAnimation"]) {
        //do something else
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7556955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档