Считайте, что транспортное средство движется к цели с постоянной скоростью. В определенный момент он видит цель и должен замедляться, чтобы полностью остановиться. Как это можно достичь с помощью анимаций в Qt Quick, имея в виду, что момент, когда он останавливается, неизвестен и будет выпущен некоторой системой AI?Плавный переход движения
При запуске приложения ниже, которая является попыткой решить эту проблему (хотя и упрощенный, так как известны условия для stopping
состояния), переход от состояния к moving
stopping
не является гладким. Как я могу облегчить переход stopping
, начав его с той же скорости, с которой предмет путешествовал в состоянии moving
?
import QtQuick 2.3
import QtQuick.Controls 1.2
ApplicationWindow {
id: window
color: "black"
width: 150
height: 600
Timer {
running: true
interval: 1000
onTriggered: {
unit.state = "moving";
unit.y = window.height - unit.height;
}
}
Rectangle {
id: unit
width: 150
height: 150
radius: width
color: "white"
state: "stopped"
readonly property bool shouldStop: unit.y >= 200
onStateChanged: print(state)
states: [
State {
name: "stopped"
},
State {
name: "moving"
},
State {
name: "stopping"
when: unit.shouldStop
}
]
Behavior on y {
enabled: unit.state == "moving"
NumberAnimation {
duration: 1000
}
}
transitions: [
Transition {
from: "moving"
to: "stopping"
NumberAnimation {
target: unit
property: "y"
to: window.height - unit.height
duration: 2000
easing.type: Easing.OutQuad
}
}
]
}
}
Какова ваша цель? Является ли это перемещением Круга сверху вниз плавно? – astre
Да. Если вы запустите приложение, вы заметите, что мгновенное изменение скорости при вводе состояния остановки. Я хотел бы, чтобы состояние остановки анимировало круг с той же скоростью, что и предмет, перемещаемый в движущемся состоянии, а затем остановите его. – Mitch
Я уточнил вопрос, чтобы быть более конкретным. – Mitch