使用Moblin进行应用程序开发——Clutter之动画

使用Moblin进行应用程序开发——Clutter之动画

ID:41008054

大小:17.06 KB

页数:8页

时间:2019-08-13

使用Moblin进行应用程序开发——Clutter之动画_第1页
使用Moblin进行应用程序开发——Clutter之动画_第2页
使用Moblin进行应用程序开发——Clutter之动画_第3页
使用Moblin进行应用程序开发——Clutter之动画_第4页
使用Moblin进行应用程序开发——Clutter之动画_第5页
资源描述:

《使用Moblin进行应用程序开发——Clutter之动画》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、使用Moblin进行应用程序开发——Clutter之动画【IT168技术】正文开始之前先说几句别的。上月20号发布的MoblinV2Beta版中,Clutter的版本已经到了0.9,API与clutter0.8相比有了些变化,两者在API上已不兼容。鉴于pyclutter目前版本依然还是0.8,并且本系列博文更侧重于概念,因此所用的API一律基于clutter0.8。等clutter1.0正式版本发布后,我们再来看API的变化。  之前讲了一点有关Actor与Stage的内容,有了演员和舞台,接下来自然而然

2、就要上台表演,也就是这里所谓的动画了。在Clutter的动画中,有三个概念不得不提一下,他们是——Timeline,Alpha和Behaviour。  Timeline,即时间轴,也就是表演的时间段,这个概念我想大家应该都能明白,不多废话了。Behaviour,即行为,也就是表演的内容,比如放大、缩小、旋转、透明化等等均属于行为的范畴。最后讲讲Alpha,这个词挺难翻译的,如果放到表演上来理解,Alpha所指的应该是表演方式。比如同样是将某个Actor放大2倍,通过Alpha可以控制是采用线性放大,加速放大

3、还是减速放大等效果。Alpha其实是一个与总帧数和当前帧相关的函数,它的返回值是一个介于0和ALPHA_MAX之间的数,每当一个新的帧产生时都会调用Alpha函数,通过Alpha函数的返回值来确定当前帧的变化。用户可以自定义Alpha函数,也可以使用clutter提供的一些常用Alpha函数。  一般来说,基于clutter进行动画编程,代码结构通常是这样的:  1.创建时间轴ClutterTimeline  2.创建ClutterAlpha  3.创建ClutterBehaviour  4.将Behavi

4、our应用到Actor上  5.启动时间轴  目前Clutter提供的Behaviour包括有Bspline、Ellipse、Depth、Opacity、Path、Rotate和Scale。如果用户觉得这些Behaviour无法满足应用的需求,可以通过实现自定义Behaviour或者使用Timeline的new-frame事件来制作自定义的动画效果。  回到以前使用的demo程序——照片浏览器上来,这次要添加的功能是相片的正中显示。之前照片是以随机方位和角度铺在桌面上,现在通过双击照片,图片将以动画的形式移

5、至窗口正中并转至0度。单击正中显示照片将使图片以动画形式回到原先的位置。  代码如下:  #!/usr/bin/python  importsys  importos  importrandom  importclutter  STAGE_WIDTH=1024  STAGE_HEIGHT=768  Dragging=False  DraggingPhoto=None  Center=False  pic_list=[]  timeline=None  alpha=None  p_behavior=None 

6、 r_behavior=None  classPhoto:  '''Photoclass'''  border_width=10  def__init__(self,path,stage):  self.stage=stage  self.path=path  self.x=0  self.y=0  self.degree=0  self.drag_start_x=0  self.drag_start_y=0  self.pic=clutter.Texture()  self.pic.set_from_fi

7、le(path)  self.width=self.pic.get_width()+2*Photo.border_width  self.height=self.pic.get_height()+2*Photo.border_width  self.frame=clutter.Rectangle()  self.frame.set_color(clutter.Color(0xff,0xff,0xff,0xff))  self.frame.set_position(self.x,self.y)  self.f

8、rame.set_size(self.width,self.height)  self.group=clutter.Group()  self.group.add(self.frame)  self.group.add(self.pic)  self.pic.set_position(Photo.border_width,Photo.border_width)  self.stage.add(self.group

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。