QML動畫--ParallelAnimation和SequentialAnimation

一、ParallelAnimation

ParallelAnimation?是 QML 中用于并行執行多個動畫的容器動畫類型,可以同時運行多個子動畫。

基本用法

qml

import QtQuick 2.15Rectangle {id: rectwidth: 100; height: 100color: "red"x: 0; y: 0; opacity: 1.0ParallelAnimation {running: trueNumberAnimation { target: rect; property: "x"; to: 200; duration: 1000 }NumberAnimation { target: rect; property: "y"; to: 200; duration: 1500 }PropertyAnimation { target: rect; property: "opacity"; to: 0.5; duration: 800 }}
}

主要屬性

屬性類型描述默認值
animationslist<Animation>子動畫列表空列表
runningbool是否運行false
loopsint循環次數1
alwaysRunToEndbool停止時是否完成false

方法

方法參數描述
start()-開始所有子動畫
stop()-停止所有子動畫
restart()-重新開始所有子動畫
pause()-暫停所有子動畫
resume()-恢復所有子動畫
addAnimation(animation)Animation添加子動畫
removeAnimation(animation)Animation移除子動畫
clearAnimations()-清除所有子動畫

信號

信號描述
started()所有子動畫開始時觸發
stopped()所有子動畫停止時觸發
finished()所有子動畫完成時觸發
paused()所有子動畫暫停時觸發
resumed()所有子動畫恢復時觸發

使用示例

1. 基本并行動畫

qml

ParallelAnimation {id: parallelAnimNumberAnimation { property: "x"; to: 300; duration: 1000 }NumberAnimation { property: "y"; to: 300; duration: 1000 }RotationAnimation { target: rotation; to: 360; duration: 1000 }
}

2. 動態添加動畫

qml

ParallelAnimation {id: dynamicAnim
}// 動態添加動畫
function addScaleAnimation() {var anim = Qt.createQmlObject('import QtQuick 2.15; NumberAnimation { property: "scale"; to: 2.0; duration: 500 }', dynamicAnim);dynamicAnim.addAnimation(anim);
}

3. 組合動畫序列

qml

SequentialAnimation {// 第一階段:并行移動和旋轉ParallelAnimation {NumberAnimation { property: "x"; to: 200 }RotationAnimation { target: rotation; to: 90 }}// 第二階段:并行改變顏色和大小ParallelAnimation {ColorAnimation { property: "color"; to: "blue" }NumberAnimation { property: "width"; to: 150 }}
}

注意事項

  1. 所有子動畫會同時開始執行

  2. 整體動畫持續時間等于最長子動畫的持續時間

  3. 可以通過?animations?屬性或?addAnimation()?方法添加子動畫

  4. 可以嵌套使用 SequentialAnimation 創建復雜動畫序列

  5. 子動畫的?running?屬性會被 ParallelAnimation 控制

二、SequentialAnimation

SequentialAnimation?是 QML 中用于順序執行多個動畫的容器動畫類型,可以按順序依次運行多個子動畫。

基本用法

qml

import QtQuick 2.15Rectangle {id: rectwidth: 100; height: 100color: "red"x: 0; y: 0SequentialAnimation {running: trueNumberAnimation { target: rect; property: "x"; to: 200; duration: 1000 }NumberAnimation { target: rect; property: "y"; to: 200; duration: 1000 }ColorAnimation { target: rect; property: "color"; to: "blue"; duration: 500 }}
}

主要屬性

屬性類型描述默認值
animationslist<Animation>子動畫列表空列表
runningbool是否運行false
loopsint循環次數1
alwaysRunToEndbool停止時是否完成當前動畫false
currentAnimationAnimation當前正在運行的子動畫null

方法

方法參數描述
start()-開始動畫序列
stop()-停止動畫序列
restart()-重新開始動畫序列
pause()-暫停當前動畫
resume()-恢復暫停的動畫
addAnimation(animation)Animation添加子動畫
removeAnimation(animation)Animation移除子動畫
clearAnimations()-清除所有子動畫
jumpTo(index)int跳轉到指定索引的動畫

信號

信號描述
started()動畫序列開始時觸發
stopped()動畫序列停止時觸發
finished()動畫序列完成時觸發
paused()動畫序列暫停時觸發
resumed()動畫序列恢復時觸發
currentAnimationChanged()當前運行的子動畫改變時觸發

使用示例

1. 基本順序動畫

qml

SequentialAnimation {id: seqAnimNumberAnimation { property: "x"; to: 100; duration: 500 }NumberAnimation { property: "y"; to: 100; duration: 500 }PauseAnimation { duration: 200 } // 暫停200毫秒RotationAnimation { target: rotation; to: 360; duration: 1000 }
}

2. 動態控制動畫序列

qml

SequentialAnimation {id: dynamicSeqAnim
}// 動態添加動畫
function buildAnimation() {dynamicSeqAnim.clearAnimations();dynamicSeqAnim.addAnimation(createAnim("x", 200));dynamicSeqAnim.addAnimation(createAnim("y", 200));
}function createAnim(prop, toValue) {return Qt.createQmlObject(`import QtQuick 2.15; NumberAnimation { property: "${prop}"; to: ${toValue}; duration: 500 }`,dynamicSeqAnim);
}

3. 嵌套組合動畫

qml

SequentialAnimation {// 第一階段:并行移動和旋轉ParallelAnimation {NumberAnimation { property: "x"; to: 200 }RotationAnimation { target: rotation; to: 90 }}// 第二階段:順序改變顏色和大小SequentialAnimation {ColorAnimation { property: "color"; to: "blue" }NumberAnimation { property: "width"; to: 150 }}
}

特殊用法

1. 使用 PauseAnimation 添加延遲

qml

SequentialAnimation {NumberAnimation { property: "opacity"; to: 0; duration: 300 }PauseAnimation { duration: 500 } // 暫停500毫秒NumberAnimation { property: "opacity"; to: 1; duration: 300 }
}

2. 循環動畫序列

qml

SequentialAnimation {loops: Animation.Infinite // 無限循環NumberAnimation { property: "x"; to: 200; duration: 1000 }NumberAnimation { property: "x"; to: 0; duration: 1000 }
}

注意事項

  1. 子動畫會按照添加順序依次執行

  2. 整體動畫持續時間等于所有子動畫持續時間之和

  3. 可以通過?currentAnimation?屬性獲取當前運行的子動畫

  4. 使用?jumpTo()?方法可以跳過某些動畫

  5. 可以嵌套 ParallelAnimation 創建復雜的動畫組合

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77594.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77594.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

NLP高頻面試題(四十三)——什么是人類偏好對齊中的「對齊稅」(Alignment Tax)?如何緩解?

一、什么是「對齊稅」(Alignment Tax)? 所謂「對齊稅」(Alignment Tax),指的是在使人工智能系統符合人類偏好的過程中,所不可避免付出的性能損失或代價。換句話說,當我們迫使AI遵循人類價值觀和規范時,AI系統往往無法達到其最大理論性能。這種性能上的妥協和折衷,就…

速查手冊:TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies(重疊指標)

速查手冊&#xff1a;TA-Lib 超過150種量化技術指標計算全解 - 1. Overlap Studies&#xff08;重疊指標&#xff09; TA-Lib&#xff08;Technical Analysis Library&#xff09;是廣泛使用的金融技術分析庫&#xff0c;實現了超過150種技術指標計算函數&#xff0c;適用于股票…

重構未來智能:Anthropic 解碼Agent設計哲學三重奏

第一章 智能體進化論&#xff1a;從工具到自主體的認知躍遷 1.1 LLM應用范式演進圖譜 階段技術形態應用特征代表場景初級階段單功能模型硬編碼規則執行文本摘要/分類進階階段工作流編排多模型協同調度跨語言翻譯流水線高級階段自主智能體動態決策交互編程調試/客服對話 1.1.…

Git 中修改某個特定的commit提交內容

在 Git 中修改某個特定的提交&#xff08;commit&#xff09;通常需要使用 交互式變基&#xff08;Interactive Rebase&#xff09; 或 修改提交&#xff08;Commit Amend&#xff09;。以下是不同場景下的具體操作步驟&#xff1a; 一、修改最近的提交&#xff08;最新提交&am…

ZLMediaKit流媒體服務器

ZLMediaKit 簡介 ZLMediaKit 是一個基于 C11 開發的高性能流媒體服務器框架&#xff0c;支持 RTSP、RTMP、HLS、HTTP-FLV、WebSocket-FLV、HTTP-TS、WebSocket-TS、HTTP-fMP4、WebSocket-fMP4 等多種流媒體協議。 主要特性 多協議支持&#xff1a; 支持 RTSP/RTMP/HLS/HTTP-F…

數字電子技術基礎(五十)——硬件描述語言簡介

目錄 1 硬件描述語言簡介 1.1 硬件描述語言簡介 1.2 硬件編程語言的發展歷史 1.3 兩種硬件描述的比較 1.4 硬件描述語言的應用場景 1.5 基本程序結構 1.5.1 基本程序結構 1.5.2 基本語句和描述方法 1.5.3 仿真 1 硬件描述語言簡介 1.1 硬件描述語言簡介 硬件描述語…

SQL系列:常用函數

1、【MySQL】合并字段函數&#xff08;列轉行&#xff09; 它可以將兩個字段中的數據合并到一個字段中。 1&#xff09;CONCAT函數 CONCAT函數可以將多個字段中的數據合并到一個字段中。它的語法格式如下&#xff1a; SELECT CONCAT(字段1,字段2,...字段N) FROM 表名;SELEC…

多線程和線程同步

多線程在項目開發中使用頻率高,使用多線程能夠提高程序的并發性 提高程序的并發性:1.多線程,對系統資源的消耗更小一些 2.多進程 系統的cpu資源有線,cpu時間片被分好后,由系統進行調度,每個線程在執行的時候都需要搶這個cpu的時間片。如果搶到了,就執行,如果沒搶到,…

時序數據預測:TDengine 與機器學習框架的結合(一)

一、引言 在當今數字化時代&#xff0c;時序數據如潮水般涌來&#xff0c;廣泛存在于物聯網、工業監控、金融交易、氣象監測等眾多領域。這些按時間順序記錄的數據蘊含著豐富的信息&#xff0c;對其進行準確預測&#xff0c;能夠為企業和組織的決策提供有力支持&#xff0c;帶…

elementUI中MessageBox.confirm()默認不聚焦問題處理

在項目中使用elementUI的MessageBox.confirm()出現了默認不聚焦的問題&#xff0c;默認確認按鈕是淺色的&#xff0c;需要點擊一下才會變成正常。面對這種問題&#xff0c;創建新組件&#xff0c;實現聚焦。替換默認的MessageBox.confirm() 解決 創建components/MessageBoxCo…

yarn的定義

YARN 即 Yet Another Resource Negotiator&#xff0c;它是 Apache Hadoop 2.x 及后續版本中的集群資源管理系統&#xff0c;也是 Hadoop 生態系統的核心組件之一。 YARN 的誕生是為了解決 Hadoop 1.x 中 MapReduce 框架將資源管理和作業調度任務耦合在一起所帶來的可擴展性差等…

http、https、TLS、證書原理理解,對稱加密到非對稱加密問題,以及對應的大致流程

http 超文本傳輸協議 存在問題&#xff1a; 安全性、隱私性、數據完整性 易被中間人&#xff08;黑客之類的&#xff09;對數據進行劫持、篡改、隱私泄露 引出了 https &#xff08;source&#xff09; http 在網絡模型中的應用層 Application > transport > inter…

深度補全網絡:如CSPN++填補稀疏點云的深度信息

深度補全網絡&#xff1a;CSPN填補稀疏點云的深度信息 深度補全(Depth Completion)是計算機視覺中的一個重要任務&#xff0c;旨在從稀疏的深度測量中恢復密集的深度圖。CSPN(Convolutional Spatial Propagation Network)是這一領域的前沿方法之一。 CSPN概述 CSPN是對原始CSPN…

QT網絡拓撲圖繪制實驗

前言 在網絡通訊中&#xff0c;我qt常用的是TCP或者UDP協議&#xff0c;就比方說TCP吧&#xff0c;一臺服務器有時可能會和多臺客戶端相連接&#xff0c;我之前都是處理單鏈接情況&#xff0c;最近研究圖結構的時候&#xff0c;突然就想到了這個問題。那么如何解決這個問題呢&…

DNS主從同步實驗

dns域名解析原理 實驗步驟1、主dns要完成dns解析&#xff1a;192.168.21.128 [rootlocalhost ~]# yum install bind -y [rootlocalhost ~]# systemctl start named [rootlocalhost ~]# vim /etc/named.conf options { listen-on port 53 { any; }; direct…

知識了解03——怎么解決使用npm包下載慢的問題?

1、為什么使用npm下載包會下載的慢 因為使用npm下載包時&#xff0c;默認使用國外服務器進行下載&#xff0c;此時的網絡傳輸需要經過漫長的海底電纜&#xff0c;因此下載速度會變慢 2、怎么解決&#xff1f;&#xff08;切換鏡像源&#xff09; &#xff08;1&#xff09;方…

在Ubuntu系統中安裝和升級RabbitVCS

在Ubuntu系統中安裝和升級RabbitVCS 目前在ubuntu中使用svn的GUI工具&#xff0c;已經安裝了。想升級一下。 當前遇到的問題是&#xff0c;我想用它看看我當前的代碼對應的版本號&#xff0c;然后再決定是否update。但是&#xff0c;好像我看不出來。根本不如在windows使用To…

cv::dnn::NMSBoxes和nms-free的比較

1. 原理與目標 cv::dnn::NMSBoxes 基于傳統的非極大值抑制&#xff08;NMS&#xff09;算法&#xff0c;通過交并比&#xff08;IoU&#xff09;篩選重疊框&#xff0c;保留置信度最高的框&#xff0c;抑制冗余檢測。支持變體如 Soft-NMS&#xff08;通過降低分數而非直接抑制&…

React-useImperativeHandle (forwardRef)

我們會遇到這樣的場景&#xff1a;某個組件想要暴露一些方法&#xff0c;來供外部組件來調用。例如我們在開發form表單的時候&#xff0c;就需要把設置表單值、重置值、提交等方法暴露給外部使用。會有如下代碼&#xff1a; import { forwardRef } from react;const Form for…

多人五子棋聯機對戰平臺 測試報告

目錄 項目介紹 測試用例設計 部分功能測試示例 自動化測試 測試范圍 排除范圍 自動化測試目錄?編輯 執行全部自動化測試用例 性能說明 總結 性能測試 結果分析 測試總結 項目介紹 該項目基于WebSocket實現實時通信&#xff0c;采用SSM框架構建在線五子棋多人聯機…