本文是作者学习 Clutter 的一个总结,介绍了 Clutter 在应用程序中的角色、基本对象、动画相关的对象以及创建动画的步骤等。
简介
初识 Clutter ,觉得它很像是 Macromedia Flash,ClutterTimeline 就像是 flash 里的时间控制,可以设定桢速 fps 和动画的时间长度; ClutterBehaviour 设定 actor 的行为。
Clutter 与 GTK 一样,采用 GObject 的面向对象模式,signal-callback 机制,将事件循环挂在 X Window 上。
基本的Objects
- ClutterActor:所有可见元素的基类,定了基本属性,事件和信号。
- ClutterStage:继承自 ClutterActor ,提供一个“舞台” 给 actor 。与 GdkWindow 相似,接受事件。单实例,用 clutter_init() 创建,以后用 clutter_stage_get_default() 得到这个全局唯一的 stage。
- Clutter 中有极少的 widget ,在 Tidy 中提供了一些 widget 。
Animation相关的Objects
- ClutterTimeline:用于描述动画的持续时间和设定 FPS(frames per sec);
- ClutterAlpha:用以计算alpha value (0~CLUTTER_ALPHA_MAX_ALPHA)。 timeline 在每一桢开始时发出一个“new frame”的信号,ClutterAlpha 根 据设定的 alpha 函数 (CLUTTER_ALPHA_SINE_INC/CLUTTER_ALPHA_RAMP_INC......) 计算出alpha value,以此来决定 actor 的属性,如位置,scale等等;
- ClutterBehaviour:actor 的行为属性,如旋转,变换大小,设定运动路径 等等。如果需要特殊的行为,我们可以自己实现一个类,继承自 ClutterBehaviour 。"driven" by clutte alpha.
创建一个animation的步骤
- create a timeline object
- create an alpha with the given timeline
- create a behaviour object from alpha
- apply a behaviour to an actor
- start the timeline
SeeAlso
http://blog.csdn.net/unailbobo/archive/2008/09/16/2934865.aspx
ClutterAlpha是一个计算浮点值的类,这个浮点值依赖于ClutterTimeline的位置
ClutterAlpha绑定一个timeline 和一个 progress函数,这个函数会把当前时间转换为要素alpha,这个要素值可以用来驱动一个ClutterBehaviour,它将alpha值转换为对ClutterActor有用的东西。
应该先提供一个Timeline,用Clutter_alpha_set_timeline( ) 绑定Timeline和Alpha,应该提供运动模式,用Clutter自己提供的ClutterAnimationMode 或者 用Clutter_alpha_register_func( )注册自定义函数,通过这两种方式设置运动mode。