标准的 Clutter actors 具有 2D 形状,能够在三维空间定位和旋转,但它们没有深度。因此理论上讲,当恰好旋转到边面对屏幕时,actor 不可见。
当需要复杂的 3D 对象时,就需要使用 OpenGL ES
API 了,附录 Implementing Actors 有相关阐述。现在,我们看下标准的 actor :
================================================
Actor 可以进行缩放、旋转、部分透明等变换。
缩放调用:
clutter.Actor.set_scale 来增加或减少actor 的大小。
注意,这不会改变 clutter.Actor.get_width()和clutter.Actor.搞clutter.Actor.get_height() 的结果,因为这仅仅在视觉效果上改变了 actor 的大小。再次调用 clutter.Actor.set_scale() 将代替之前的变换而不是在现有的结果上进行。
==============================================================
剪切
Actors 也可以被"剪切",通过 clutter_actor_set_clip() 可以控制 actor 的一部分被显示,参数中给出剪切的矩形区域。 比如,可以
这样实现滚动,创建一个大容器,每次设置剪切矩形使仅仅一小部分可见。 Scrolling up could then be implemented by moving the actor down
while moving the clip up. 剪切可以调用clutter.Actor.remove_clip() 删除。
剪切域之外的区域不消耗显存,不需要太多处理。
移动clutter.Actor.set_scale()和clutter.Actor.set_rotation()的移动函数,但是可以通过调用clutter.actor.move_by() 或者 clutter.actor.set_depth () 来移动 actor。
不像缩放和旋转操作,clutter.actor.move_by() 实质上改变 clutter.actor.get_x() 等函数的结果。
========================================================
例子:
=========================================================
旋转调用:
clutter_actor_set_rotation() 可以围绕 x 轴、y 轴、z 轴旋转 actor, 旋转轴和旋转角度在参数中指定,CLUTTER_X_AXIS、
clutter.X_AXIS [requires y and z]、clutter.Y_AXIS [requires x and z ], clutter.Z_AXIS [requires x and y]分别代表 x,y,z 轴。三个轴中只有两个轴的坐标被指定,具体哪两个轴,依旋转轴而定。比如,当使用 CLUTTER_X_AXIS 时, y 和 z 参数指定了在 X 轴上的旋转中心。 跟 clutter.Actor.set_scale() 类似, 旋转操作只在视觉效果上操作,不会影响 actor 的真正位置、宽、高,clutter.Actor.get_x() 的接口依然返回旋转之前的值。
跟 clutter.Actor.set_scale() 类似,旋转操作发生在视觉效果上,不会影响 actor 的真正位置、宽、高,clutter.Actor.get_x() 的
接口依然返回旋转之前的值。
=========================================================
123.png
clutter真的很好学!不过我也是刚刚入门而已!
例子:
使用 GtkClutterEmbed 可以将一个 ClutterStage 放在 GTK+ 窗口中。比如,窗口可能包含其它的 GTK+ widget,可以与 stage 中的actor 交互。使用 gtk_clutter_embed_new() 初始化 widget,然后像其它 GTK+ widget 一样,将它加入一个容器 (container)。调用gtk_clutter_embed_get_stage 从GtkClutterEmbed widget 获得 ClutterStage ,然后就可以使用 Clutter API 了。
当使用 GtkClutterEmbed widget 时,应该使用 gtk_clutter_init 而不是 clutter_init() 和 gtk_init() 初始化 Clutter 和GTK+。
使用 gtk_main() 而不是 clutter_main() >进入 main 循环。
C语言可以这样使用.pytwhon没有用过,找不到相关,改天我问问王勇.
==========================================================================
标准的 Clutter actors 具有 2D 形状,能够在三维空间定位和旋转,但它们没有深度。因此理论上讲,当恰好旋转到边面对屏幕时,actor 不可见。
当需要复杂的 3D 对象时,就需要使用 OpenGL ES
API 了,附录 Implementing Actors 有相关阐述。现在,我们看下标准的 actor :
clutter.Rectangle: 一个矩形;
clutter.Text : 文本
clutter.Texture : 图像
clutter.Label : 显示文本
clutter.Entry : 可以被编辑的文本
============================
例子:
每个 actor 都应该调用 ****.add() 函数加入 stage,紧接着要指定它的位置。所有的 actor 都继承自 ClutterActor,所
有可以通过调用 clutter.Actor.set_position设置 x 和 y 坐标,用clutter.Actor.set_depth() 设置 z 坐标,用
clutter.Actor.set_size() 设置宽和高。
actor 的位置是以其所在容器(如 stage)的左上角为原点 , 但原点可以调用 clutter.Actor.set_anchor_point()改变。
缺省状态下,actor 是隐藏的,所以要记得调用 clutter.actor.show() 显示 actor,之后也可以调用clutter.actor.hide() 隐藏它。
linux.png
运行看看,图片是不是在stage的左上角,然后调用clutter.Actor.set_anchor_point()再来试试,一定很好玩!
Actor 可以进行缩放、旋转、部分透明等变换。
缩放调用:
clutter.Actor.set_scale 来增加或减少actor 的大小。
注意,这不会改变 clutter.Actor.get_width()和clutter.Actor.搞clutter.Actor.get_height() 的结果,因为这仅仅在视觉效果上改变了 actor 的大小。再次调用 clutter.Actor.set_scale() 将代替之前的变换而不是在现有的结果上进行。
==============================================================
剪切
Actors 也可以被"剪切",通过 clutter_actor_set_clip() 可以控制 actor 的一部分被显示,参数中给出剪切的矩形区域。 比如,可以
这样实现滚动,创建一个大容器,每次设置剪切矩形使仅仅一小部分可见。 Scrolling up could then be implemented by moving the actor down
while moving the clip up. 剪切可以调用clutter.Actor.remove_clip() 删除。
剪切域之外的区域不消耗显存,不需要太多处理。
移动clutter.Actor.set_scale()和clutter.Actor.set_rotation()的移动函数,但是可以通过调用clutter.actor.move_by() 或者 clutter.actor.set_depth () 来移动 actor。
不像缩放和旋转操作,clutter.actor.move_by() 实质上改变 clutter.actor.get_x() 等函数的结果。
========================================================
例子:
=========================================================
旋转调用:
clutter_actor_set_rotation() 可以围绕 x 轴、y 轴、z 轴旋转 actor, 旋转轴和旋转角度在参数中指定,CLUTTER_X_AXIS、
clutter.X_AXIS [requires y and z]、clutter.Y_AXIS [requires x and z ], clutter.Z_AXIS [requires x and y]分别代表 x,y,z 轴。三个轴中只有两个轴的坐标被指定,具体哪两个轴,依旋转轴而定。比如,当使用 CLUTTER_X_AXIS 时, y 和 z 参数指定了在 X 轴上的旋转中心。 跟 clutter.Actor.set_scale() 类似, 旋转操作只在视觉效果上操作,不会影响 actor 的真正位置、宽、高,clutter.Actor.get_x() 的接口依然返回旋转之前的值。
跟 clutter.Actor.set_scale() 类似,旋转操作发生在视觉效果上,不会影响 actor 的真正位置、宽、高,clutter.Actor.get_x() 的
接口依然返回旋转之前的值。
=========================================================
123.png
clutter真的很好学!不过我也是刚刚入门而已!
例子:
有一个clutter.Timeline是可以很好玩的