clutter

clutter

clutter是英國的移動Linux開發和服務商Opened Hand公司用於GUI的軟體庫,是一個CAPI集合。

公司概括


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的基本概念
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。