Clutter学习(七):容器

来源:互联网 发布:旅行社办公软件 编辑:程序博客网 时间:2024/05/01 22:07

  学习资料来源:http://www.openismus.com/documents/clutter_tutorial/0.9/docs/tutorial/html/sec-containers.html

  在一个容器内,我们可以放入新的actor(clutter_container_add函数),他的位置是根据所在容器的相对位置中确定。因此如果我们的项目涉 及的内容很多,仅用stage作为一个container是不足够的,我们需要更多的容器来组织。ClutterStage是一个container,也是clutter或者clutter widget的主容器。另一个容器是ClutterGroup,我们这里学习ClutterGroup的用法。

#include <stdlib.h>
#include <clutter/clutter.h>

ClutterActor * rect, * label;
static gboolean on_stage_button_press(ClutterStage *stage, ClutterEvent *event, gpointer data){
     //… … 一些触发处理
    return TRUE;
}
int main(int argc , char * argv[]){
        ClutterColor stage_color ={0x00,0x00,0x00,0xff};
        ClutterColor actor_color ={0xff,0xff,0xff,0xB0};

        clutter_init(&argc, & argv);

        ClutterActor *stage = clutter_stage_get_default();
        clutter_actor_set_size(stage,350,350);
        clutter_stage_set_color(CLUTTER_STAGE(stage),&stage_color);

        /* Add one group in a stage */
        ClutterActor * group = clutter_group_new();
        clutter_actor_set_position(group,40,40);
        //clutter_actor_set_size(group,200,200); /* 用于试验*/
        clutter_container_add_actor(CLUTTER_CONTAINER(stage),group);

        /*Using texture instead of rect, lable will display correctly with ati display driver and clutter 1.0 */
        texture = clutter_texture_new_from_file("1_flowingflying.jpg",NULL);
       
clutter_container_add_actor(CLUTTER_CONTAINER(group),texture);
        clutter_actor_set_position(texture,150,100);

        /*Insert a label */
        label = clutter_text_new_full ("微软雅黑 14", "您好!", &actor_color);
        clutter_actor_set_position(label,150,240);
        clutter_container_add_actor(CLUTTER_CONTAINER(group),label);

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

        clutter_actor_show_all(stage);
        clutter_main();
        return EXIT_SUCCESS;
}

  将ClutterGroup作为container是很简单的。

  试验:将group的容器限制大小,看看里面部件的动态效果能否操作容器大小的限制。只要在stage的可显示范围内,即使我们限制container的大小,在使用move,rotation,scaling,clip的时候,不受group大小的限制,因此我们也可以认为对于group而且没有size的限制。

相关链接:
我的Clutter相关博客

 

原创粉丝点击