Clutter學習(二):一個Stage小程式

來源:互聯網
上載者:User

  學習資料來源於:http://www.openismus.com/documents/clutter_tutorial/0.9/docs/tutorial/html/sec-stage.html

  安裝Clutter開發包後,在Makefile中使用相關資源:


[wei@wei clutter]$ pkg-config clutter-1.0 --cflags

-pthread
-I/usr/include/clutter-1.0 -I/usr/include/cairo
-I/usr/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/include/glib-2.0
-I/usr/lib/glib-2.0/include  

[wei@wei clutter]$ pkg-config clutter-1.0 --libs

-pthread
-lclutter-glx-1.0 -lpangocairo-1.0 -lgthread-2.0 -lrt -lgdk_pixbuf-2.0
-lGL -lX11 -lXext -lXdamage -lXcomposite -lpango-1.0 -lcairo
-lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lXfixes

  我們可以之用 pkg-config
clutter-1.0 --cflags 和 pkg-config clutter-1.0 --libs。例如:gcc -Wall -g
example.c -o example `pkg-config clutter-0.9 --cflags  --libs`

  下面是我們的Makefile程式,這也將用於以後的學習中


TARGET    = stage

stage:

    gcc -Wall -g stage.c -o stage  `pkg-config clutter-1.0 --cflags  --libs`

all:

    stage

clean:

    rm  $(TARGET)

  不在羅嗦,下面是例子程式stage.c,他開啟一個200*200的小視窗,並對滑鼠點擊進行callback,返回點擊座標。Clutter的命名有些特別,它使用了stage(舞台)和actor(演員)的關係。這裡我們先學習舞台。莎士比亞說:全世界是一座舞台,所有的男人女人不過是演員。這個用於clutter非常合適。


#include <clutter/clutter.h>

#include <stdlib.h>

/* 這是Callback函數 */

static gboolean

on_stage_button_press (ClutterStage *stage, ClutterEvent *event, gpointer data)

{

    float x = 0;

    float y = 0;

    clutter_event_get_coords (event, &x, &y);

    g_print ("Event: %d(%s) , Stage clicked at (%f, %f)/n", event->type,

     event->type==CLUTTER_BUTTON_PRESS ? "CLUTTER_BUTTON_PRESS" : "", x, y);

    return TRUE; /* Stop further handling of this event. */

}

int main(int argc, char * argv[])

{
    /*最後一個參數表示alpha參數,前面三個一次是紅綠藍。 */

    ClutterColor stage_color ={0x00,0x00,0x00,0x0f};

    /* 這是Clutter的初始化,在使用Clutter之前,必須調用此函數*/

    clutter_init(&argc, &argv);

    /* 所有的Clutter應用都至少包含一個ClutterStage。Stage含有的Actors例如rectangles,images,text。*/

    /* Get the stage and set its size and color*/

    ClutterActor * stage = clutter_stage_get_default ();

    clutter_actor_set_size (stage, 200, 200);

    clutter_stage_set_color (CLUTTER_STAGE (stage), &stage_color);

    /* 下面函數用於顯示stage,Show the stage: */

    clutter_actor_show (stage);

    /* 下面函數不是Clutter的函數,是gtk的函數

。可以在GTK+2.0教程中找到相關的GtkWidget定義 */

    /* Connect a signal handler to handle mouse clicks an key presses on the stage: */

    g_signal_connect (stage, "button-press-event",G_CALLBACK (on_stage_button_press), NULL);

    /* 主迴圈,不會結束main。Start the main loop, so we can respond to events: */

    clutter_main();

    return EXIT_SUCCESS;

}

相關連結:



我的Clutter相關部落格

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.