qml----动画入门(四、简单的动画实现 PathAnimation类)

PathAnimation,根据以往的经验来看,这个也是Animation的儿子(唔,也许是女儿~),而且专门处理Path的。没错,看官,你眼力真好

这个派生类可就能耐了,我们要多说点它的专属本事

anchorPoint属性---它来指定对象的哪个点镶嵌在路径上。比如一个圆,你如若设置了该属性为圆的圆心,那么这个圆心就一直在路径上运动。关于这个属性,你可以按照"x,y"或者           Qt.point()构造一个Point对象赋值给它 

orientation属性---控制目标对象沿着路径运动的时的旋转策略,它有几个值,我们简单的介绍几个。剩下问帮助文档

  PathAnimation.Fixed  这是一个默认的属性,在运动的过程中保持物体不旋转

  PathAnimatino.LeftFirst  旋转目标对象时努力使目标对象的左侧贴合路径。同时,类似的有RightFirst以及BottomFirst等等

  如果你指定了这个属性,而对象到达路径末端时的旋转角度与你的期望不符,你可以设置endRotation来指定一个角度。

  另外需要注意的方面是,如果指定了orientationExitDuration属性,旋转过程会以动画的方式;否则,则是跳变得方式。

path属性。这里就是构造一个路径,这里构造的具体方法和过程参考帮助文档

 

下面一个例子是用Canvas画了半个圆,然后让一个矩形围绕这个半圆旋转

import QtQuick 2.2

Canvas{
    width: 400
    height: 240

    onPaint: {
        var ctx = getContext("2d")
        ctx.lineWidth = 4
        ctx.strokeStyle = "red"
        ctx.beginPath()
        ctx.arc(200, 0, 160, Math.PI * 2, 0, false)
        ctx.stroke()
    }

    Rectangle{
        id: rect
        width: 40
        height: 40
        x: 20
        y: 0
        color: "blue"

        MouseArea{
            id: mouseArea
            anchors.fill: parent
            onClicked: pathAnim.start()
        }

        PathAnimation{
            id: pathAnim
            target: rect
            duration: 6000
            anchorPoint: "20, 20"
            orientationEntryDuration: 200
            orientationExitDuration: 200
            easing.type: Easing.InOutCubic

            orientation: PathAnimation.TopFirst
            path: Path{
                startX: 40
                startY: 20
                PathArc{
                    x: 360
                    y: 0
                    useLargeArc: true
                    radiusX: 160
                    radiusY: 160
                    direction: PathArc.Counterclockwise
                }
            }
        }
    }
}

效果如下

 

转载于:https://www.cnblogs.com/SaveDictator/p/8138180.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值