我有问题,如何通过qml中的MouseArea检测滑动?
此代码来自文档:
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 ?
}
}
}
但我不明白如何左右滑动,我在移动应用程序(ios和android)中得到了这个用途 .
有人可以帮帮我吗?谢谢 . 如何用手指检测左右滑动?谢谢 .
1 回答
滑动是一个简单的事件链:
所以这正是你检测它的方式:
初始化一些变量(例如originX / Y)
onPressed
,然后检测运动onPositionChanged
,计算原点和当前位置之间的向量,分析长度和方向以评估方向和速度 . 将originX/Y
设置为新位置并继续直到onReleased
. 然后你可以确定它是否是一个滑动(取决于最后一个矢量或运动的历史 - 以某种方式存储或累积计算的矢量)你需要考虑的事情:最后一次移动可能很短,因为用户在发布之前放慢速度,或者因为他发布了两个步骤之间 . 因此,仅考虑最后一个向量可能会产生不良结果 .
相反,你可以累积最后n个向量,应用一些权重 .
如果用定时器替换
onPositionChanged
以使分析间隔更长,也可以改进 . 您可以使用间隔来查找最佳行为 .因为实现一个精细调整的检测算法并不容易,我建议重新考虑一下,是否有必要自己实现检测,或者是否已经实现了滑动行为的许多
Item
可能就足够了 .