clutter学习笔记一(不是教程,请不要骂人)
Tofloor
poster avatar
z85525006
deepin
2012-02-05 00:28
Author
本人现在在学习clutter,所以作个笔记,并不是要教大家什么,大家可以互相讨论下哈!
所有内容来自网上和API手册,官方C语言版本的clutter.
================================================
能制作非常美观的动画,我看的很心动,所以就提前学习,也希望能早出这样美观的界面,太爽啦.
DeepinScrot-1321.png
要求读者具备 python 语言基础知识。
Clutter 的关键概念,介绍常用的用户界面元素 ("actors")。关于 API 接口的详细信息,请参考 API 参考手册。本书使
用的 API 是 Clutter 1.0 版本。
Clutter 用到了一些 GTK+ 接口,所以必要时你得去查 GTK+ 文档。

安装依赖库:
安装 Clutter 之前需要先安装依赖库,涉及如下包:
GTK+
libgl (Mesa)

这些包又有自己的依赖包,包括:
pkg-config
glib
ATK
Pango

C版本的编译: `pkg-config clutter-1.0 --cflags  --libs`
====================================================
  1. 继承关系
  2.                 GObject
  3.                         +----GInitiallyUnowned
  4.                                 +----ClutterActor
  5.                                         +----ClutterRectangle
  6.                                         +----ClutterTexture
  7.                                         +----ClutterClone
  8.                                         +----ClutterText
  9.                                         +----ClutterGroup
  10.                                         +----ClutterStage
  11.                                         +----ClutterBox
Copy the Code
====================================================
可用的Actor类型
                ClutterActor:所有可见的演员的基础抽象类       
                基础演员:
                 ClutterRectangle、 ClutterTexture、ClutterClone、
                 ClutterText、 ClutterCairoTexture
                容器类演员:
                 ClutterGroup、ClutterStage、ClutterBox
====================================================
ClutterActor可能接收的Signals:
  1. "allocation-changed"                                         : Run Last
  2.   "button-press-event"                                      : Run Last
  3.   "button-release-event"                                    : Run Last
  4.   "captured-event"                                            : Run Last
  5.   "destroy"                                : Cleanup / No Recursion / No Hooks
  6.   "enter-event"                                    : Run Last
  7.   "event"                                          : Run Last
  8.   "hide"                                           : Run First
  9.   "key-focus-in"                                   : Run Last
  10.   "key-focus-out"                                  : Run Last
  11.   "key-press-event"                                : Run Last
  12.   "key-release-event"                              : Run Last
  13.   "leave-event"                                    : Run Last
  14.   "motion-event"                                   : Run Last
  15.   "paint"                                          : Run Last
  16.   "parent-set"                                     : Run Last
  17.   "pick"                                           : Run Last
  18.   "queue-redraw"                                   : Run Last
  19.   "queue-relayout"                                 : Run Last
  20.   "realize"                                        : Run Last
  21.   "scroll-event"                                   : Run Last
  22.   "show"                                           : Run First
  23.   "unrealize"                                      : Run Last
Copy the Code
=====================================================
五、Actor和Stage
基本概念和原理
        可见的元素叫做“Actors”;
        “Actors”被放置在“Stage”上;
        “Actors”有“parents”和“children”;
        “Actors”可以通过事件和动画直接操作。
Actors
                1.可以应用的效果
                        position:按坐标(x, y, z) 在3维空间位移;
                        rotation:沿三个坐标轴旋转;
                        size:大小变化;
                        opacity:透明度变化;
                        scale:伸缩变化;
                2.效果对于children也有效
                3.坐标是相对parent的
====================================================
Stage 基础:
每个 Clutter 应用程序至少包含一个 clutter.Stage。这个 stage 包含矩形 (rectangle)、图像 (image)、文本 (text)等界面元素 (actor)。

ClutterStage 继承于 ClutterActor,所以 actor 的很多函数都可以被 stage 使用。比如,调用 clutter.actor.show 显示 stage。
ClutterStage 也实现了 ClutterContainer 的接口,因此通过调用 ***.add() 加入自己的 actor。
调用 clutter.main() 开始 main 循环,以便于 stage 的 actor 可以动起来并与用户交互。

简单的例子:
  1. #!/usr/bin/env python
  2. #! coding:utf-8
  3. import clutter
  4. import gtk
  5. class Clutter():
  6.     def __init__(self):
  7.        stage = clutter.Stage()
  8.        clutter.Actor.set_size(stage,200,200)
  9.        stage.connect('destroy', clutter.main_quit) #退出clutter窗口
  10.        stage.connect("button-press-event", self.stage_button_press)
  11.        stage.show() #改为clutter.Actor.show(stage),也能显示stage
  12.        clutter.main()
  13.    
  14.     def stage_button_press(self,s, e):
  15.        print e.x, e.y
  16.       
  17.       
  18. Clutter()
Copy the Code
=================================================================
不要鄙视我,我只是在学习,做个笔记!
Reply Favorite View the author
All Replies
lovesnow
deepin
2012-02-06 05:34
#1
: 好吧,好好整理, 好让我发扬一下 拿来主义!
Reply View the author