Think in G

Never stop ThinkinG…

关于Core Animation工具箱的构想

with 3 comments

最近在构思一个用于Mac/iOS开发的工具。感觉比较庞大,脑子里的东西比较混乱,决定先把最初的设想写下来,然后再一步步细化。

问题的由来

这个构思的起因是2011年底前的一个iOS项目。设计MM为了吸引用户,在UI中设计了各种可爱的元素。也差不多在这同时,Path 2登场了。其精致的动画让设计MM意识到动画也是体现UI表现力的重要手段。于是,她就开始设计中增加动画元素。

围绕这这些动画效果,我发现在设计和开发过程中有不少问题:

  • UI设计师如何描述动画
    动画与传统的静态UI不同,单单凭借静态的设计是很难把问题说清楚的。如果采用关键帧的方式去绘制一些分镜头的脚本,会给设计师增加不少工作压力。
  • 开发人员如何实现动画
    在Mac/iOS平台上,实现动画主要靠的是Core Animation框架。然而Core Animation比较底层,因此Apple对其进行了封装,提供了Cocoa Animation以方便开发人员实现动画。但不论在Mac还是iOS上,通过编程方式实现动画效果依然需要大量的代码,而且对于比较复杂的动画,开发人员还是需要直接通过Core Animation操纵CALayer、CAAnimation来实现。在我的项目中,最重的view controller里,居然有80%的代码用于实现动画效果。

于是我意识到,这样的开发是有问题的。理由很简单,设计师所设计的是动画,既然是动画,就不应该是几个分镜,几个关键帧这样的半成品。更不应该等到开发人员将代码写出来,再就具体的效果进行讨论。而开发人员也不应该堆砌大量的代码用于动画,因为同时具有艺术感和代码实现能力的开发人员真的非常少。想要做出高质量的动画,这样的过程没有几个回合是搞不定的。总之一句话:

Does real animator write codes? Definitely NOT!

在设计师和开发人员之间必须有个工具扮演桥梁的角色。类似于Flash上的工作流,设计师能够通过该工具直接做出大部分动画效果,而开发人员则在项目中导入这些预先定义好的动画脚本,并根据需要进行一些优化和微调。

如果存在这样的工具,不仅能有效简化设计师和程序员之间的沟通过程,实现工作职责的更合理分配。更重要的是,它还能使代码变得干净,提升代码和动画的可复用性。

方案构想

以我目前对Cocoa/Cocoa Touch的理解,这个工具应该包括以下几个部分

  1. 一种用于描述动画以及相关project的数据格式
    暂时并没有夸平台的想法,所以初步考虑采用Cocoa的Archiving机制实现。
  2. 一套用于Cocoa/Cocoa Touch的框架
    该框架用于将保存在文件中的动画脚本还原为代码,并通过回调等形式与应用代码进行数据绑定。最后通过Core Animation框架执行动画。
  3. 一个用于设计动画的桌面应用
    该应用的目标是让设计人员能够直观地设计动画,并能够保存读取1所提到的数据格式。具体的功能可能包括:

    • 一个静态编辑器,用于编辑CALayer及其子类的实例(设置背景、透明度、阴影、过滤器等)。
    • 一个动画编辑器,用于生成简单动画或是复杂的关键帧动画、AnimationGroup等对象。
    • 辅助对象编辑器,用于编辑动画图层的约束关系、MediaTimingFunction等辅助对象。
    • …… (余下的仍在设想)

目前的状况

这个构想是去年末渐渐浮现出来的。于是最近开始系统地围绕着Core Animation相关技术以以及Mac桌面应用的开发开始调查和学习。目前的感觉是与iOS相比,Mac OS X的技术平台要复杂得多。为了了解Core Animation的来龙去脉,连2006/2007年苹果的Mac技术讲座都翻出来了,由于苹果在技术架构上秉承实用主义的原则,在这几年的时间里,整个技术体系的更新非常快(当时还有不少视频讲如何使用GC的……) 因此,技术准备的时间会比较长,在把相关的问题理清楚之前,不打算贸然开始开发工作。

鉴于最近看了不少Core Animation的资料,我也打算将这些资料整理成博客陆续放出。

分享家:Addthis中国

Written by ghawk.gu

January 8th, 2012 at 7:55 pm

Posted in Mac,软件

Tagged with , , , , ,

3 Responses to '关于Core Animation工具箱的构想'

Subscribe to comments with RSS or TrackBack to '关于Core Animation工具箱的构想'.

  1. 支持!直接操纵CA确实太费时

    xinranmsn

    8 Jan 12 at 20:34

  2. 这个构想类似于这个 http://www.artpigsoft.com, 但是这个代码是给cocos2d用的, 而不是core animation

    yangyi

    15 May 12 at 14:26

  3. 哦,多谢!我去看一下。另外最近还有个 PaintCode 我觉得也挺有意思的,具体还没用过。这种类似代码生成的工具感觉很方便。

    ghawk.gu

    15 May 12 at 16:27

Leave a Reply