QPropertyAnimation实现游戏地图场景变换
首先我們先了解一下什么是QPropertyAnimation,先來看看它的官方解析。
官方解析 QPropertyAnimation
QPropertyAnimation類為Qt屬性提供動(dòng)畫。
QPropertyAnimation類可以修改Qt屬性,從而達(dá)到動(dòng)畫的效果。這些屬性的值存儲(chǔ)在QVariants中,所以QPropertyAnimation繼承了QvariantAnimation,并且支持他相同元類型的動(dòng)畫,比如他的超類。
這個(gè)類必須是QObject的派生類。他必須經(jīng)過一個(gè)設(shè)置才能使動(dòng)畫效果成為可能(這樣的化QPropertyAnimation能夠設(shè)置屬性的值)。注意到這使得Qt小部件(窗口)都能做出動(dòng)畫的形式。舉個(gè)例子:
屬性名和QObject的實(shí)例這屬性應(yīng)該被傳遞給動(dòng)畫的構(gòu)造函數(shù)。然后你能指定這個(gè)屬性的開始和結(jié)束的指。當(dāng)你自定義屬性的時(shí)候?qū)崿F(xiàn)的效果也是一樣的,只要QVariant能支持,QVariantAnimation就能用。
QVariantAnimation類描述了如何去做一個(gè)動(dòng)畫的細(xì)節(jié)。注意,如果start value沒有被設(shè)置,這個(gè)屬性會(huì)設(shè)置一個(gè)值,這個(gè)值是QPropertyAnimation實(shí)例化的時(shí)候創(chuàng)建的。
QpropertyAnimation工作的時(shí)候是充滿魅力的,要想完成一個(gè)復(fù)雜的動(dòng)畫,要包含幾個(gè)對象實(shí)例,這里把他們放到QAnimationGroup中。一個(gè)動(dòng)畫組也是一個(gè)動(dòng)畫,這個(gè)動(dòng)畫包含了許許多多的動(dòng)畫。當(dāng)組內(nèi)的動(dòng)畫運(yùn)行時(shí)他能夠管理內(nèi)部的小動(dòng)畫,查看QParallelAnimationGroup這個(gè)例子可以看他如何使用以及管理。
實(shí)現(xiàn)游戲地圖場景變換
言歸正傳,我們還是來講解如何來實(shí)現(xiàn)游戲地圖背景的自動(dòng)切換滾動(dòng),由于游戲地圖背景滾動(dòng)屬于復(fù)雜的動(dòng)畫,因此我們要結(jié)合QAnimationGroup來使用。
話不多說還是直接上代碼吧:
先添加頭文件
#include <QPropertyAnimation> #include <QLabel> #include <QParallelAnimationGroup>在MyWidget.cpp的構(gòu)造函數(shù)中添加
(注意setKeyValueAt的參數(shù)設(shè)置)
結(jié)果展示:
總結(jié)
以上是生活随笔為你收集整理的QPropertyAnimation实现游戏地图场景变换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记(十七)——redis(CRUD
- 下一篇: 学习笔记——matplotlib学习