clutter

clutter

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/clutter.h>

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。

相關詞條

相關搜尋

熱門詞條

聯絡我們