将艺术家的动画转换为代码

问题描述:

在我们的开发过程中,我们遇到了许多艺术家/设计会模拟动画的实例,开发人员将负责转换为代码 - 无论是UIView动画还是CCAction像Cocos2D这样的游戏引擎。将艺术家的动画转换为代码

问题是,我们没有一种将艺术家/设计师提供的动画(通常以Flash/After Effects或类似工具的形式)直接转换为代码的好方法。开发人员不得不花费大量的时间搞清楚确切的动画参数和代码,看起来像这样结束:

CAAnimationGroup *(^groupedAnimation)(CGMutablePathRef curvedPath, NSTimeInterval delay) = ^(CGMutablePathRef curvedPath, NSTimeInterval delay) { 

    CGFloat moveTime = 1.6; 

    CABasicAnimation *scaling = [CABasicAnimation animationWithKeyPath:@"transform.scale"]; 
    scaling.fromValue = @1.; 
    scaling.toValue = @0.05; 
    scaling.beginTime = delay; 
    scaling.duration = moveTime; 
    scaling.removedOnCompletion = NO; 
    scaling.fillMode = kCAFillModeForwards; 
    scaling.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]; 

    CABasicAnimation *opacity = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
    opacity.fromValue = @1.; 
    opacity.toValue = @0.1; 
    opacity.beginTime = delay + moveTime-0.6; 
    opacity.duration = 0.5; 
    opacity.removedOnCompletion = NO; 
    opacity.fillMode = kCAFillModeForwards; 
    opacity.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 

    CAKeyframeAnimation *path = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
    path.beginTime = delay; 
    path.duration = moveTime; 
    path.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
    path.path = curvedPath; 
    path.calculationMode = kCAAnimationPaced; 
    path.removedOnCompletion = NO; 
    path.fillMode = kCAFillModeForwards; 

    CAAnimationGroup *group = [CAAnimationGroup animation]; 
    group.animations = @[scaling, opacity, path]; 
    group.beginTime = 0; 
    group.duration = moveTime+delay; 
    group.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]; 
    group.removedOnCompletion = NO; 
    group.fillMode = kCAFillModeForwards; 

    return group; 
}; 

搞清楚的代码,这些动画的参数是一个非常手动过程,涉及到很多目睹动画模拟和迭代缩小在一个看起来不错的价值。通常非常耗时和繁琐。

有更好的过程吗?这是什么行业标准?

感谢

看一看SpriteKit场景编辑器,

在XCode->新建项目 - >游戏 - >游戏技术= SpriteKit

然后打开场景编辑器通过点击文件,在项目导航扩展.sks

您可以尝试动画及以上实现无代码

一行
+0

嗯,但我的问题是规范UIKit(UIView动画)和cocos2D,两者都不兼容spritekit场景编辑器。 –

+0

你可以使用SpriteKit编辑器进行实验,直到你对动画行为满意为止,一旦你开始编码使用UIView或其他的东西,精灵套件编辑器可以帮助你设计和测试动画,而无需编码... – guest

+0

正确的,这是我们'已经使用Flash/After Effects完成。我们可以很好地嘲笑动画,但将它翻译成代码是乏味的部分,因为我们没有将模拟转换为适合UIView动画调用的正确参数的好方法。 –