如何预测在 QML 中捕捉轻弹的好位置
How to predict a good position for snapping a flickable in QML
我有一个 flickable,我想将其捕捉到特定位置(我以特定方式计算)。我看到两个选项:
- 在 movementEnded 我用数字动画
捕捉到离 "contentX" 最近的位置
- 在 flickEnded 中,我用数字动画
捕捉到最接近 "contentX" 的位置
选项1看起来不太好,移动停止,然后flickable再次开始移动(捕捉位置相隔半个屏幕)。
在选项2中,我发现捕捉位置的选择很困难。如果用户快速移动滑动,我更愿意捕捉到接近移动结束位置的位置,但这很难预测。
这是选项 1 的示例代码:
NumberAnimation on contentY {
id: yAnimation
to: 0
duration: 200
}
onMovementEnded: {
var index = Math.round(contentY / (itemHeight))
yAnimation.to = index * itemHeight
yAnimation.start()
}
In Option 2 I find the choice of snap position difficult. If the user
slides with a fast movement, I would prefer to snap to a position
close to the position, where the movement would end, but that is hard
to predict.
你有水平和垂直速度的属性,所以你可以计算出一个复合速度,还有另一个
property bool aboutToStop: horizontalVelocity + verticalVelocity < thresholdValue
和
onAboutToStopChanged: if (aboutToStop) playASnapAnimationToTheNearestItem()
我有一个 flickable,我想将其捕捉到特定位置(我以特定方式计算)。我看到两个选项:
- 在 movementEnded 我用数字动画 捕捉到离 "contentX" 最近的位置
- 在 flickEnded 中,我用数字动画 捕捉到最接近 "contentX" 的位置
选项1看起来不太好,移动停止,然后flickable再次开始移动(捕捉位置相隔半个屏幕)。
在选项2中,我发现捕捉位置的选择很困难。如果用户快速移动滑动,我更愿意捕捉到接近移动结束位置的位置,但这很难预测。
这是选项 1 的示例代码:
NumberAnimation on contentY {
id: yAnimation
to: 0
duration: 200
}
onMovementEnded: {
var index = Math.round(contentY / (itemHeight))
yAnimation.to = index * itemHeight
yAnimation.start()
}
In Option 2 I find the choice of snap position difficult. If the user slides with a fast movement, I would prefer to snap to a position close to the position, where the movement would end, but that is hard to predict.
你有水平和垂直速度的属性,所以你可以计算出一个复合速度,还有另一个
property bool aboutToStop: horizontalVelocity + verticalVelocity < thresholdValue
和
onAboutToStopChanged: if (aboutToStop) playASnapAnimationToTheNearestItem()