clutter :clutter

更新时间:2024-09-21 03:45

Clutter是一个基于GObject的图形库,由英国移动Linux开发和服务商Opened Hand公司开发,用于创建硬件加速的用户界面。Clutter是一个基于OpenGL的交互式画布库,不包含任何图形控制元素。Clutter依赖于 OpenGL(1.4+)或 OpenGL ES(1.1或2.0)进行渲染,支持使用GStreamer进行媒体播放和使用Cairo进行2D图形渲染。Clutter是自由和开源软件,遵循GNU Lesser General Public License(LGPL)版本2.1的要求。2022年2月,开发团队宣布将停止Clutter的开发,不会再发布新版本,已使用Clutter的开发者被鼓励将应用程序移植到GTK 4和libadwaita2。

公司概括

clutter感觉有点像flash,通过Clutter Timeline和Clutter Behaviour 控制对象的行为。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\u003cclutter/clutter.h\u003e;

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(透明)变形。

Containers

中文名:容器

ClutterContainer;

ClutterStage;

ClutterGroup;

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

参考资料

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