QML应用动画(Applying Animations)

这篇具有很好参考价值的文章主要介绍了QML应用动画(Applying Animations)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一 扩展可点击图像元素版本2(ClickableImage Version2)

1 第一个火箭

2 第二个火箭

3 第三个火箭


动画可以通过以下几种方式来应用:

属性动画 - 在元素完整加载后自动运行;

属性动作 - 当属性值改变时自动运行;

独立运行动画 - 使用start()函数明确指定运行或者running属性被设置为true(比如通过属性绑定)

后面我们会谈论如何在状态变换时播放动画。

一 扩展可点击图像元素版本2(ClickableImage Version2)

为了演示动画的使用方法,我们重新实现了ClickableImage组件并且使用了一个文本元素(Text Element)来扩展它。

// ClickableImageV2.qml
// Simple image which can be clicked

import QtQuick 2.0

Item {
    id: root
    width: container.childrenRect.width
    height: container.childrenRect.height
    property alias text: label.text
    property alias source: image.source
    signal clicked

    Column {
        id: container
        Image {
            id: image
        }
        Text {
            id: label
            width: image.width
            horizontalAlignment: Text.AlignHCenter
            wrapMode: Text.WordWrap
            color: "#111111"
        }
    }

    MouseArea {
        anchors.fill: parent
        onClicked: root.clicked()
    }
}

为了给图片下面的元素定位,我们使用了Column(列)定位器,并且使用基于列的子矩形(childRect)属性来计算它的宽度和高度(width and height)。我们导出了文本(text)和图形源(source)属性,一个点击信号(clicked signal)。我们使用文本元素的wrapMode属性来设置文本与图像一样宽并且可以自动换行。

注意

由于几何依赖关系的反向(父几何对象依赖于子几何对象)我们不能对ClickableImageV2设置宽度/高度(width/height),因为这样将会破坏我们已经做好的属性绑定。这是我们内部设计的限制,作为一个设计组件的人你需要明白这一点。通常我们更喜欢内部几何图像依赖于父几何对象。

QML应用动画(Applying Animations)

三个火箭位于相同的y轴坐标(y = 200)。它们都需要移动到y = 40。每一个火箭都使用了一种的方法来完成这个功能。

    ClickableImageV3 {
        id: rocket1
        x: 40; y: 200
        source: "assets/rocket2.png"
        text: "animation on property"
        NumberAnimation on y {
            to: 40; duration: 4000
        }
    }

1 第一个火箭

第一个火箭使用了Animation on 属性变化的策略来完成。动画会在加载完成后立即播放。点击火箭可以重置它回到开始的位置。在动画播放时重置第一个火箭不会有任何影响。在动画开始前的几分之一秒设置一个新的y轴坐标让人感觉挺不安全的,应当避免这样的属性值竞争的变化。

    ClickableImageV3 {
        id: rocket2
        x: 152; y: 200
        source: "assets/rocket2.png"
        text: "behavior on property"
        Behavior on y {
            NumberAnimation { duration: 4000 }
        }

        onClicked: y = 40
        // random y on each click
    //        onClicked: y = 40+Math.random()*(205-40)
    }

2 第二个火箭

第二个火箭使用了behavior on 属性行为策略的动画。这个行为告诉属性值每时每刻都在变化,通过动画的方式来改变这个值。可以使用行为元素的enabled : false来设置行为失效。当你点击这个火箭时它将会开始运行(y轴坐标逐渐移至40)。然后其它的点击对于位置的改变没有任何的影响。你可以试着使用一个随机值(例如 40+(Math.random()*(205-40))来设置y轴坐标。你可以发现动画始终会将移动到新位置的时间匹配在4秒内完成。

    ClickableImageV3 {
        id: rocket3
        x: 264; y: 200
        source: "assets/rocket2.png"
        onClicked: anim.start()
    //        onClicked: anim.restart()

        text: "standalone animation"

        NumberAnimation {
            id: anim
            target: rocket3
            properties: "y"
            from: 205
            to: 40
            duration: 4000
        }
    }

3 第三个火箭

第三个火箭使用standalone animation独立动画策略。这个动画由一个私有的元素定义并且可以写在文档的任何地方。点击火箭调用动画函数start()来启动动画。每一个动画都有start(),stop(),resume(),restart()函数。这个动画自身可以比其他类型的动画更早的获取到更多的相关信息。我们只需要定义目标和目标元素的属性需要怎样改变的一个动画。我们定义一个to属性的值,在这个例子中我们也定义了一个from属性的值允许动画可以重复运行。

QML应用动画(Applying Animations)

点击背景能够重新设置所有的火箭回到它们的初始位置。第一个火箭无法被重置,只有重启程序重新加载元素才能重置它。

注意

另一个启动/停止一个动画的方法是绑定一个动画的running属性。当需要用户输入控制属性时这种方法非常有用:文章来源地址https://www.toymoban.com/news/detail-431161.html

  NumberAnimation {
        ...
        // animation runs when mouse is pressed
        running: area.pressed
    }
    MouseArea {
        id: area
    }

到了这里,关于QML应用动画(Applying Animations)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Flutter】【packages】simple_animations 简单的实现动画

    导入包到项目中去 可以实现简单的动画, 快速实现,不需要自己过多的设置 有多种样式可以实现 [ ] 简单的用例:具体需要详细可以去 pub 链接地址 1. PlayAnimationBuilder 新增child 参数,静态的child ,减少资源的浪费,其他的build 同样可以这样使用 2.LoopAnimationBuilder 循环动画 该用

    2024年02月13日
    浏览(32)
  • QML Book 学习基础3(动画)

      目录 主要动画元素 例子:  非线性动画 分组动画 Qt 动画是一种在 Qt 框架下创建交互式和引人入胜的图形用户界面的方法,我们可以认为是对某个基础元素的多个设置                         PropertyAnimation-属性值变化时的动画 NumberAnimation-qreal类型值变化时的动

    2024年02月10日
    浏览(32)
  • 应用机器学习的建议 (Advice for Applying Machine Learning)

    问题: 假如,在你得到你的学习参数以后,如果你要将你的假设函数放到一组 新的房屋样本上进行测试,假如说你发现在预测房价时产生了巨大的误差,现在你的问题是要想改进这个算法,接下来应该怎么办? 解决思路: 一种办法是使用更多的训练样本。具体来讲,也许你

    2024年01月25日
    浏览(43)
  • QML动画实战指南:打造华丽且高性能的用户界面动效

    QML(Qt Meta-Object Language)是一种声明式编程语言,用于设计和实现基于Qt的用户界面。它允许开发者以更简单、高效的方式创建动态、响应式的UI。Qt Quick是Qt的一个子模块,提供了一套基于QML的UI开发框架,可以方便地创建出跨平台的图形用户界面。 动画在现代UI设计中占据着

    2024年02月09日
    浏览(59)
  • uniapp:tabBar点击后设置动画效果

    APP端不支持dom操作,也不支持active伪类,绞尽脑汁也没办法给uniapp原生的tabBar点击加动画效果,所以最终只能舍弃原生tabBar,改用自定义tabBar。 自定义tabBar的原理是,页面的上部分分别是tabBar对应的页面组件,下部分是固定在底部的tabBar,通过点击tabBar获取到当前索引,然后

    2024年02月08日
    浏览(39)
  • 【manim动画教程】--目录(完结)

    manim是一个生成数学教学视频的动画引擎。 它用编程的方式创建精美的数学动画,让数学更加易懂。 本教程简单介绍了 manim 的基本使用方式,基于 v0.17.2 版本 manim 安装 manim是基于python语言开发的开源框架,是由 3blue1brown 开发的。 本来是他们自己用来制作数学视频用的,因

    2023年04月22日
    浏览(39)
  • Ubuntu 扩展 LVM 根目录

    1. 查看当前空间使用情况 结果 查看逻辑分组情况 结果 查看磁盘情况 结果 查看块关联情况 结果 2. /dev/sdb 重新分区 结果 输入 m 回车 结果 输入 n 回车 结果 输入 p 回车 结果 输入 1 回车 结果 直接回车 结果 再回车 结果 输入 w 保存分区表 回车 结果 重新读取分区表 没有输出

    2024年02月10日
    浏览(41)
  • Unity中,点击按钮Button,控制,动画Animator暂停播放

    在Unity中,你可以使用以下脚本来实现点击按钮时停止动画的功能: using UnityEngine; using UnityEngine.UI; public class StopAnimationOnClick : MonoBehaviour {     public Animator animator;     public Button button;     private bool isAnimationPlaying = true;     private void Start()     {         button.onClick.AddListen

    2024年04月27日
    浏览(46)
  • 【Qt QML入门】第一个Quick应用

    运行结果: 打开Qt Creator,创建一个Qt Quick Qpplication,IDE为我们创建一个应用工程,其中包含如下文件: .pro工程文件,我们通过它来打开整个工程:  在工程文件中,通常其中的字段定义: main.qml 是Quick应用的主窗口文件,下一篇我们重点介绍QML当中的元素特性,目前只需要

    2024年02月12日
    浏览(40)
  • android,Compose,消息列表和动画(点击item的时候,就会删除)

    Compose,消息列表和动画(点击item的时候,就会删除) 案例二:

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包