必威电竞|足球世界杯竞猜平台

clutter
來源:互聯網

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

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。

參考資料 >

生活家百科家居網