Mr.*_*per 5 qt android swipe qml ios
我有问题,如何在 qml 中检测鼠标区域的滑动?
此代码,来自文档:
Rectangle {
id: container
width: 600; height: 200
Rectangle {
id: rect
width: 500; height: 500
MouseArea {
anchors.fill: parent
drag.target: rect
drag.axis: Drag.XAxis
drag.minimumX: 0
drag.maximumX: container.width - rect.width
//event slide here ?
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不明白如何向左或向右滑动,我在移动应用程序(ios 和 android)中得到了这个用法。
有人可以帮助我吗?谢谢。如何检测用手指向左或向右滑动?谢谢。
滑动是一个简单的事件链:
Touch -> Movement -> Release
Run Code Online (Sandbox Code Playgroud)
这就是您检测它的方式:
您初始化一些变量(例如originX/Y)onPressed,然后检测运动onPositionChanged,计算原点和当前位置之间的矢量,分析长度和方向以评估方向和速度。设置originX/Y到新位置并继续直到onReleased。然后您可以确定是否是滑动(取决于最后一个向量或运动的历史记录 - 为此以某种方式存储或累积计算出的向量)
您需要考虑的事项:最后一个动作可能会很短,因为用户在释放之前减慢速度,或者因为在两个步骤之间释放。因此,仅考虑最后一个向量可能会产生不好的结果。
相反,您可以累积最后 n 个向量,并应用一些权重。
此外,如果您用计时器替换onPositionChanged以获得更长的分析间隔,您可能会有所改进。您可以调整间隔来找到最佳行为。
由于实现一个经过微调的检测算法并不简单,我建议重新考虑是否有必要自己实现检测,或者Item实现滑动行为的众多 s 中的一个是否就足够了。
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |