0
点赞
收藏
分享

微信扫一扫

Clutter学习(七):容器


  学习资料来源: 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的限制。

 

举报

相关推荐

0 条评论