将艺术家的动画转换为代码
问题描述:
在我们的开发过程中,我们遇到了许多艺术家/设计会模拟动画的实例,开发人员将负责转换为代码 - 无论是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
您可以尝试动画及以上实现无代码
一行
嗯,但我的问题是规范UIKit(UIView动画)和cocos2D,两者都不兼容spritekit场景编辑器。 –
你可以使用SpriteKit编辑器进行实验,直到你对动画行为满意为止,一旦你开始编码使用UIView或其他的东西,精灵套件编辑器可以帮助你设计和测试动画,而无需编码... – guest
正确的,这是我们'已经使用Flash/After Effects完成。我们可以很好地嘲笑动画,但将它翻译成代码是乏味的部分,因为我们没有将模拟转换为适合UIView动画调用的正确参数的好方法。 –