QML做渐变色文字动画

Item {
        id: container
        width:200
        height:200

        Rectangle {
             id: gradientRect;
             width:80
             height: 80
             gradient: Gradient {
                 GradientStop { position: 0; color: "red" }
                 GradientStop { position: 1; color: "steelblue" }
             }
             visible: false
             layer.enabled: true;
             layer.smooth: true
         }

        Text {
            id: text
            anchors.centerIn: parent
            color: "pink"
            text: "Hello world!"
            font.pixelSize: 32
            layer.samplerName: "maskSource"
            layer.enabled: true
                 layer.effect: ShaderEffect {
                     property var colorSource: gradientRect;
                     fragmentShader: "
                               uniform lowp sampler2D colorSource;
                               uniform lowp sampler2D maskSource;
                               uniform lowp float qt_Opacity;
                               varying highp vec2 qt_TexCoord0;
                               void main() {
                                   gl_FragColor =
                                       texture2D(colorSource, qt_TexCoord0)
                                       * texture2D(maskSource, qt_TexCoord0).a
                                       * qt_Opacity;
                               }
                           "
                 }



            SequentialAnimation on font.letterSpacing {
                loops: Animation.Infinite;
                NumberAnimation { from: 0; to: 50; easing.type: Easing.InQuad; duration: 3000 }
                ScriptAction {
                    script: {
                        container.y = (screen.height / 4) + (Math.random() * screen.height / 2)
                        container.x = (screen.width / 4) + (Math.random() * screen.width / 2)
                    }
                }
            }

            SequentialAnimation on opacity {
                loops: Animation.Infinite;
                NumberAnimation { from: 1; to: 0; duration: 2600 }
                PauseAnimation { duration: 400 }
            }
        }
    }

 效果如下:

效果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超奇电子

你的鼓励是我创作的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值