请教下autojs如何实现拖住滑动,滑动后并不松开直到执行按下或者松开的动作?
我使用 gesture方法执行完成后就松开了导致验证码被执行,我需要验证完继续拖住滑动的
autojs如何实现拖住滑动,滑动后并不松开直到执行按下或者松开的动作?
gestures(
[delay, dur, [x1, y1], [x2,y2] ],
[(delay+dur-1), dur2, [x2, y2], [x2, y2] ],
)
随便点击一个位置就可以松开
整个手势总时长应该不能超过一分钟 ( delay + dur + dur2 < 60000 )
在Auto.js中,如果你希望实现一个拖住并保持滑动的动作,直到执行按下或松开的效果,可以使用gesture
方法结合setInterval
和手动控制手指的位置来实现。在这种情况下,我们将手指保持在某个相对位置不动,然后在需要的时候再松开手指。
示例代码
以下是一个实现这种功能的示例代码:
// 按下手指,开始滑动
function startSwipe(x, y, duration) {
// 使用 setInterval 来保持手指拖着滑动
let startTime = new Date().getTime();
let interval = setInterval(() => {
let now = new Date().getTime();
let elapsed = now - startTime;
let progress = Math.min(elapsed / duration, 1); // 确保进度不会超过 1
// 计算当前拖动的位置
let currentX = x + (targetX - x) * progress; // 根据目标位置调整
let currentY = y + (targetY - y) * progress; // 根据目标位置调整
// 有效地模拟手指当前位置
// 需要根据你的需求调整目标的位置
if (progress < 1) {
// 保持在当前拖动的位置
setPosition(currentX, currentY);
} else {
clearInterval(interval); // 完成滑动
}
}, 100); // 调整间隔时间以适应你的需求
}
// 设置手指的位置
function setPosition(x, y) {
// 这里可以用 `gesture` 方法来定义滑动
// 也可以使用 `setTouch` 方法保持位置
// 因为 Auto.js 不支持手指位置的持续移动,
// 这里需要用定时器保持手动的位移
}
// 松开手指
function releaseTouch() {
// 这里实现松开手指的动作
}
// 实际调用示例
let startX = 300; // 起始位置
let startY = 500; // 起始位置
let targetX = 300; // 目标位置
let targetY = 200; // 目标位置
let duration = 1000; // 滑动持续时间
startSwipe(startX, startY, duration);
// 在某些条件下松开手指
// 如需要按下某个按钮的条件
setTimeout(() => {
releaseTouch();
}, 2000); // 2秒后松开手指,调整时间以适应你的实际需求
注意事项
- 以上代码只是一个逻辑示例,实际的实现可能需要根据你的需求进行调整。
- 没有直接的方法来持续保持手指划动,具体的实现依赖于在目标位置的持续更新。
- 请注意监控UI变化,以决定何时释放手指。
- 根据Auto.js的版本和设备性能,可能需要进一步调试以获得平滑的效果。