1
我想要一個對象,需要它到一個複雜的路徑,並作爲動畫移動。 路徑包含直線和曲線。就像火車一樣。QML如何反向播放動畫
兩種溶液:1. PathAnimation
或2 states
多動畫
的溶液1問題: 火車可能停止在一個隨機的時間點(暫停動畫),並轉到反向回開始位置(反向播放動畫)。
所以我想知道任何方式反向玩PathAnimation
?
我想要一個對象,需要它到一個複雜的路徑,並作爲動畫移動。 路徑包含直線和曲線。就像火車一樣。QML如何反向播放動畫
兩種溶液:1. PathAnimation
或2 states
多動畫
的溶液1問題: 火車可能停止在一個隨機的時間點(暫停動畫),並轉到反向回開始位置(反向播放動畫)。
所以我想知道任何方式反向玩PathAnimation
?
我認爲QML沒有這個功能。
無論何時您需要新的路徑,您都可以設置新的路徑。即,當動畫結束時。
這裏有一個例子:
import QtQuick 2.3
import QtQuick.Controls 1.1
ApplicationWindow {
visible: true
width: 350
height: 300
Rectangle {
id: window
width: 350
height: 300
Canvas {
id: canvas
anchors.fill: parent
antialiasing: true
onPaint: {
var context = canvas.getContext("2d")
context.clearRect(0, 0, width, height)
context.strokeStyle = "black"
context.path = pathAnim.path
context.stroke()
}
}
SequentialAnimation {
id: mySeqAnim
running: true
PauseAnimation { duration: 1000 }
PathAnimation {
id: pathAnim
duration: 2000
easing.type: Easing.InQuad
target: box
orientation: PathAnimation.RightFirst
anchorPoint: Qt.point(box.width/2, box.height/2)
path: myPath1
}
onStopped: {
console.log("test")
pathAnim.path = myPath2;
mySeqAnim.start();
}
}
Path {
id: myPath1
startX: 50; startY: 100
PathLine { x: 300; y: 100 }
onChanged: canvas.requestPaint()
}
Path {
id: myPath2
startX: 300; startY: 100
PathLine { x: 50; y: 100 }
onChanged: canvas.requestPaint()
}
Rectangle {
id: box
x: 25; y: 75
width: 50; height: 50
border.width: 1
antialiasing: true
Text {
anchors.centerIn: parent
}
}
}
}
謝謝,原因QAbstractAnimation有方向屬性,我認爲QML動畫有權控制動畫相同的能力。我真的很想知道爲什麼Qt不支持這一點。 – Jiu
那麼,QML不是Qt。 QML沒有全部的Qt API功能。無論如何,你可以根據你的需求使用C++/Qt [擴展](http://doc.qt.io/qt-5/qtqml-tutorials-extending-qml-example.html)QML(也許是一個插件? ) – Tarod