QML如何反向播放动画
我想要一个对象,需要它来模拟一个复杂的路径并作为动画移动。 路径包括直线和曲线。就像一列火车 两个解决方案:1<代码>路径动画或2<代码>状态带有多动画 解决问题1: 列车可能会在随机时间点停止(暂停动画),然后反向返回到起始位置(反向播放动画)QML如何反向播放动画,qml,Qml,我想要一个对象,需要它来模拟一个复杂的路径并作为动画移动。 路径包括直线和曲线。就像一列火车 两个解决方案:1路径动画或2状态带有多动画 解决问题1: 列车可能会在随机时间点停止(暂停动画),然后反向返回到起始位置(反向播放动画) 所以我想知道反向播放路径动画的方法吗?我认为QML没有这种功能 您可以在需要新路径时设置新路径。即,当动画结束时 这里有一个例子: import QtQuick 2.3 import QtQuick.Controls 1.1 ApplicationWindow {
所以我想知道反向播放
路径动画的方法吗?我认为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
}
}
}
}
我认为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 animation应该具有相同的控制动画的能力。我真的想知道为什么Qt不支持这个。好吧,QML不是Qt。QML没有所有的qtapi功能。在任何情况下,您都可以根据您的要求使用C++/Qt来创建QML(可能是插件?)。谢谢,因为QAbstractAnimation具有方向属性,我认为QML animation应该具有相同的控制动画的能力。我真的想知道为什么Qt不支持这个。好吧,QML不是Qt。QML没有所有的qtapi功能。在任何情况下,您都可以根据自己的需求使用C++/Qt实现QML(可能是一个插件?)