QML Flipable、Flickable和状态与动画 上篇

本文介绍的是QML Flipable、Flickable和状态与动画,我们以前接触过QML组件,和一些QML相关的内容,那么本文介绍的内容就很明了了。先来看内容。

AD:51CTO 网+ 第十二期沙龙:大话数据之美_如何用数据驱动用户体验

QML Flipable、Flickable和状态动画是本文要介绍的内容,在接触QML的时候,在前面的例子中我们已经多次提到过状态State了,在这一节中我们再次讲解一下QML状态动画的知识,然后讲解两个特效:Flipable翻转效果和Flickable弹动效果。我们先新建一个Qt QML Application工程,命名为“myAnimation”。本文分为上下篇为大家介绍。

一、状态与动画

在QML中提供了多个实用的动画元素。其列表如下。

下面我们进行简单的讲解。

1.PropertyAnimation 属性动画。

列表中的NumberAnimation 数值动画,ColorAnimation颜色动画和RotationAnimation旋转动画都继承自PropertyAnimation。

例如将程序代码更改如下:

  1. import Qt 4.6
  2. Rectangle {
  3. width: 300;height: 200
  4. Rectangle{
  5. id:page; width:50; height:50
  6. x:0; y:100; color:”red”
  7. PropertyAnimation on x{ to:100; duration:1000 }
  8. }
  9. }

其中的属性动画的代码可以用数值动画来代替:

  1. NumberAnimation on x{ to:100; duration:1000}

顾名思义,数值动画,就是只能对类型为real的属性进行动画设置。例如上面对x属性,使其在1000ms即一秒的时间里由以前的 0 变为100。效果如下:

我们再将属性动画改为:

  1. PropertyAnimation on color{ to:”blue”; duration:1000}

它可以用颜色动画来代替,相当于:

  1. ColorAnimation on color{ to:”blue”; duration:1000}

颜色动画只能用于类型是 color的属性。效果如下:

2、缓冲曲线

我们很多时候不想让动画只是线性的变化,例如实现一些皮球落地,刹车等特殊动画效果,我们就可以在动画中使用缓冲曲线。

例如:

  1. NumberAnimation on x{ to:100; duration:1000
  2. easing.type: “InOutElastic”}

这里的曲线类型有很多种,我们可以查看QML PropertyAnimation Element Reference 关键字,在这个帮助文件中列出了所有的曲线类型。

3、状态过渡动画

我们将程序代码更改如下:

  1. Rectangle {
  2. width: 300;height: 200
  3. Rectangle{
  4. id:page; width:50; height:50
  5. x:0; y:100; color:”red”
  6. MouseArea{id:mouseArea; anchors.fill:parent}
  7. states: State {name: “state1″
  8. when:mouseArea.pressed
  9. PropertyChanges {target: page
  10. x:100;color:”blue”
  11. }
  12. }
  13. transitions: Transition {
  14. from: “”; to: “state1″
  15. NumberAnimation{property:”x”;duration:500}
  16. ColorAnimation{duration:500}
  17. }
  18. }
  19. }

这里我们设置了一个新的状态“state1”,当鼠标在小矩形上按下时进入该状态。这种状态之间的改变我们前面已经讲过。但是我们想让两个状态之间进行变化时成为连续的,具有动画效果,那么就要使用上面的transitions状态过渡。

可以看到,在transitions中我们使用了Transition{}元素,然后从”" 到”state1″ 即从默认状态进入“state1”状态。下面我们分别使用了数值动画和颜色动画,这样当从默认状态过渡到新建状态时,就会变为连续的动画。注意:这里颜色 动画元素中省去了指定颜色属性。

运行程序,效果如下:

4、并行动画

在上面的例子里我们看到,数值动画和颜色动画是并行执行的,其实我们也可以明确指出,让它们并行执行。那就是ParallelAnimation并行动画。上面的代码可以更改为:

  1. ParallelAnimation{
  2. NumberAnimation{property:”x”;duration:500}
  3. ColorAnimation{duration:500}
  4. }

5、序列动画

与上面的并行动画相对应的是序列动画SequentialAnimation,使用它我们可以使两个动画按顺序执行,也就是一个执行完了,另一个才执行。

  1. SequentialAnimation{
  2. NumberAnimation{property:”x”;duration:500}
  3. ColorAnimation{duration:500}
  4. }

这样当红色方块完成移动后再变为蓝色。

6、属性默认动画。

有时我们不希望设置固定的状态,而是想当一个属性改变时,它就能执行默认的动画。那么我们就可以使用Behavior{}元素。我们将程序代码更改如下:

  1. Rectangle {
  2. width: 300;height: 200
  3. Rectangle{
  4. id:page; width:50; height:50; y:100; color:”red”
  5. x:mouseArea.pressed?100:0;
  6. MouseArea{id:mouseArea; anchors.fill:parent}
  7. Behavior on x { NumberAnimation{ duration:500} }
  8. }
  9. }

这里使鼠标按下时属性x为100,并设置了x的默认动画,这样只要x发生了变化,它就会执行默认的动画。

7、其他动画元素。

在开始的动画元素列表中还有其他一些动画元素没有讲到,我们会在后面的应用中使用到它们。你也可以先查看一下它们的帮助文档。

小结:QML Flipable、Flickable和状态动画 上篇的内容介绍完了,请继续参考 QML Flipable、Flickable和状态与动画 下篇 ,希望本篇文章对你一偶帮助!

时间: 2024-08-07 23:55:19

QML Flipable、Flickable和状态与动画 上篇的相关文章

QML Flipable、Flickable和状态与动画 下篇

本文介绍的是Flickable和状态与动画,我们以前接触过QML相关的内容,那么本文介绍的内容就很明了了.先来看内容. AD: Flickable和状态与动画 下篇是本节要介绍的内容,Flickable和状态与动画 上篇,在这一节中我们再次讲解一下Flickable弹动效果. 二.Flipable翻转效果 在    Flipable{           id:flipable; width:back.width; height:back.height           property in

QQ去除未读状态的动画

QQ去除未读状态的动画 by 伍雪颖 github代码 - (void)drawRect:(CGRect)rect { switch (_state) { case SRSlimeStateNormal: { float percent = 1 - distansBetween(_startPoint , _toPoint) / _viscous; if (percent == 1) { CGContextRef context = UIGraphicsGetCurrentContext();

QML 图像、状态和动画 九

1 渐变 使用Gradient项目来定义.渐变中颜色使用一组GradientStop子项目进行定义. Rectangle{ id:window width:240; height:150 gradient: Gradient{ GradientStop{position:0.0; color:"red"} GradientStop{position:0.33; color:"yellow"} GradientStop{position:1.0; color:&quo

锋利的jQuery-4--停止动画和判断是否处于动画状态(防止动画加入队列过多的办法)

1.停止元素的动画:stop([cleanQueue, gotoEnd]):第一个参数代表是否要清空未执行完的动画队列,第二个参数代表是否直接将正在执行的动画跳转到末状态. 无参数stop():立即停止当前的动画,如果接下来还有动画则以当前状态开始接下来的动画. 举例:为元素绑定hover事件之后,如果光标移入移出的速度太快,导致移入的动画还没执行完,就移出光标,则移出的动画效果就会被放到队列,等移入的动画完成后在执行.因此如果光标的移入移出速度太快,就会导致动画效果与移动光标不一致的情况. 此

Unity3D动画面板编辑器状态属性对照表

不推荐用AnimationUtility.SetEditorCurve问题很多,推荐AnimationCurve.AddKey.通过AnimationUtility.GetAllCurves可以获得编辑器状态的动画属性. GameObject m_IsActive Transform m_LocalPosition.x m_LocalPosition.y m_LocalPosition.z m_LocalScale.x m_LocalScale.y m_LocalScale.z m_LocalR

关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪些事情,为了解决这个问题,unity允许每个动画单元来绑定一个脚本代码,这个脚本代码必须继承于StateMachineBehaviour;2: 可以在动画状态的Add Behaviour上添加挂载一个脚本到动画状态;3: StateMachineBehaviour主要接口: (1)OnStateEn

QML(十) QML 状态

用户界面用来显示不同场景中的界面,或者是改变它们的外观来相应用户的交互.通常情况下,由一些列变化是并发进行的.Qt帮助中查看QML States关键字.状态属性states. 1 创建状态 要创建一个状态,可以向项目的states属性添加一个State对象,states属性包含了该项目状态的列表. Rectangle{ id:window width:240; height:150 color:"red" MouseArea{ anchors.fill: parent onClicke

Unity3D之Mecanim动画系统学习笔记(五):Animator Controller

简介 Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能: 可以对多个动画进行整合: 使用状态机来实现动画的播放和切换: 可以实现动画融合和分层播放: 可以通过脚本来对动画播放进行深度控制: 下面我们通过一个图来直观的看看动画的组成结构: Animator组件用来控制人物动画的播放,其中需要的两个最核心的内容就是控制动画播放逻辑的Animator Controller以

iOS动画编程

1.视图动画(UIViewAnimation) 可以改变视图的属性(Animatable UIView properties) frame:控制UIView的大小和该UIView在superview中的相对位置. bounds:控制UIView的大小 center:控制UIView的位置 transform:控制UIView的缩放,旋转角度等固定好中心位置之后的变化 alpha:控制UIView的透明度 backgroundColor:控制UIView的背景色 contentStretch:控制