Как предсказать хорошую позицию для привязки мерцания в QML
У меня есть мерцание, которое я хочу привязать к определенным позициям (которые я вычисляю определенным образом). Я вижу два варианта:
- в движении закруглил привязку к ближайшей позиции к "contentX" с анимацией числа
- в flickEnded я привязываюсь к ближайшей позиции к "contentX" с анимацией числа
Вариант 1 выглядит не очень хорошо, движение останавливается, и после этого мерцание начинает двигаться снова (позиции привязки находятся на расстоянии половины экрана).
В варианте 2 я нахожу затруднительным выбор позиции привязки. Если пользователь скользит с быстрым движением, я предпочел бы привязаться к позиции, близкой к позиции, где движение закончится, но это трудно предсказать.
Вот пример кода для варианта 1:
NumberAnimation on contentY {
id: yAnimation
to: 0
duration: 200
}
onMovementEnded: {
var index = Math.round(contentY / (itemHeight))
yAnimation.to = index * itemHeight
yAnimation.start()
}
1 ответ
В варианте 2 я нахожу затруднительным выбор позиции привязки. Если пользователь скользит с быстрым движением, я предпочел бы привязаться к позиции, близкой к позиции, где движение закончится, но это трудно предсказать.
У вас есть свойства для горизонтальной и вертикальной скорости, так что из них вы можете рассчитать составную скорость, есть другая
property bool aboutToStop: horizontalVelocity + verticalVelocity < thresholdValue
а также
onAboutToStopChanged: if (aboutToStop) playASnapAnimationToTheNearestItem()