clutter

更新时间:2024-06-02 10:44

clutter是英国的移动Linux开发和服务商Opened Hand公司用于GUI软件库,是一个C API集合。

公司概括

clutter感觉有点像flash,通过ClutterTimeline 和ClutterBehaviour 控制对象的行为。clutter用C语言编写,采用与GTK类似的面向对象编程。clutter的核心概念是:stage(画布,舞台)和actor(演员)。莎士比亚说“全世界是一座舞台,所有的男人女人不过是演员”,这句话很好的表现了这点。画布相当于一个window,或者framebuffer,是actor的舞台。所有的clutter程序都需要创建一个stage,它是最顶层的对象,也是一个container(容器),让其他的actor在其上面表演。actor们本身都是2D对象,是平面的,不过clutter允许我们对这些actor在3D空间进行操作,比如绕着x,y,z轴旋转。

clutter除了可以让我们在3D空间操作2D的actor之外,最有特色的就是可以使用时间线,通过多条时间线的协同使用,我们可以很容易创造出“有生气”“诱惑力”的程序。当然,clutter也会处理传统的键盘、鼠标事件。

基本 clutter 程序设计与stage的基本概念

#include

clutter_init()

clutter_stage_get_default()

clutter_actor_show()

clutter_container_add()

clutter_main()

开始一个clutter程序,使用clutter_init()函数初始化。使用clutter_stage_get_default()创建一个stage。也可以使用GtkClutterEmbed widget在一个GTK+窗口中使用clutter。

ClutterStage从ClutterActor对象派生,所以很多ClutteActor的属性都可以用在stage上,例如调用clutter_actor_show()函数显示stage。

ClutterStage也操作ClutterContainer,允许使用clutter_container_add()函数添加子actors。调用clutter_main()函数开始一个main loop,让stage“活”起来。

stage

每个clutter应用程序都至少包括一个ClutterStage。这个stage容纳Actors(如rectangles,images,text等)。

stage widget

GtkClutterEmbed widget允许把ClutterStage放到一个GTK+窗口中。使用gtk_clutter_embed_new()函数创建一个实例,再用gtk_clutter_embed_get_stage()函数从GtkClutterEmbed对象创建一个ClutterStage实例。

使用GtkClutterEmbed widget,需要用gtk_clutter_init代替clutter_init和gtk_init初始化clutter和GTK+。使用gtk_main()代替clutter_main()创建main loop。

Actors

clutter中的基本actor有:

(1) ClutterStage --- stage

(2) ClutterRectangle --- 矩形

(3) ClutterText --- 显示和编辑文本

(4) ClutterTexture --- 图片

每个actor需要用clutter_container_add()函数添加到stage中,并且用clutter_actor_set_position()函数设置位置(x,y坐标),z 轴使用clutter_actor_set_depth()函数设置。使用clutter_actor_set_size()函数设置宽度和长度(width and height)。

actor 的位置默认在 parent container(比如stage)的 top-left(0,0),可以用clutter_actor_set_anchor_point()函数改变。

默认情况下,actor 是隐藏的,需要调用clutter_actor_show()函数显示。可以调用clutter_actor_hide()函数隐藏对象。actor 可以使用scaling(缩放)、rotation(旋转)、partly transparent(透明)变形。

容器

中文名:容器

ClutterContainer

ClutterStage

ClutterGroup

使用ClutterGroup可以同时操作几个actor。

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}