手势 Gesture
Gesture 往屏幕上派发点击和滑动,按坐标工作,不依赖节点文本。能用 UiSelector 找到节点时,优先 UiObject.click()。节点不稳定、游戏或图色场景再用坐标。
坐标来自节点时,先 bounds() 再算中心点。系统键(返回、Home、最近任务)也走这一组方法。
javascript
Gesture.click(100, 200);| 方法 | 作用 |
|---|---|
click(x, y) | 点击,约 200–300 毫秒 |
longClick(x, y) | 长按,约 600–800 毫秒 |
press(x, y, duration) | 按住指定毫秒,会等手势结束 |
pressQuick(x, y, duration) | 发出手势后立刻返回 |
swipe(startX, startY, endX, endY, duration) | 直线滑动 |
swipeHuman(sx, sy, ex, ey, duration) | 带弧度的拟人滑动 |
gesture(duration, points) | 单指路径,points 为 [[x,y], ...] |
gestures(strokes) | 多指 / 组合手势 |
back() / home() / recents() | 系统键 |
click(x, y)
参数:
x {number}横坐标y {number}纵坐标
返回: {boolean} 是否发出点击
按压约 200–300 毫秒。要自己控制时长用 press。
javascript
Gesture.click(100, 200);longClick(x, y)
参数:
x {number}横坐标y {number}纵坐标
返回: {boolean} 是否发出长按
按压约 600–800 毫秒。要自己控制时长用 press。
javascript
Gesture.longClick(100, 200);press(x, y, duration)
参数:
x {number}横坐标y {number}纵坐标duration {number}按压毫秒数
返回: {boolean} 是否完成按压
会阻塞到这次按压结束。
javascript
Gesture.press(100, 200, 10);pressQuick(x, y, duration)
参数:
x {number}横坐标y {number}纵坐标duration {number}按压毫秒数
返回: {boolean} 是否已派发
派发后立刻返回,不等手势演完。需要连续点、又不想卡住当前脚本时用这个。
javascript
Gesture.pressQuick(100, 200, 50);swipe(startX, startY, endX, endY, duration)
参数:
startX {number}起点 xstartY {number}起点 yendX {number}终点 xendY {number}终点 yduration {number}滑动毫秒数
返回: {boolean} 是否完成滑动
javascript
Gesture.swipe(100, 200, 500, 400, 200);swipeHuman(sx, sy, ex, ey, duration)
参数:
sx {number}起点 xsy {number}起点 yex {number}终点 xey {number}终点 yduration {number}滑动毫秒数
返回: {boolean} 是否完成滑动
路径带轻微弧度,比直线 swipe 更接近人手。
javascript
Gesture.swipeHuman(500, 1500, 500, 400, 400);gesture(duration, points)
参数:
duration {number}整段手势耗时(毫秒)points {number[][]}路径点,形如[[x, y], [x, y], ...]
返回: {boolean} 是否完成
单指沿给定折线滑动(也可单点按压)。
javascript
Gesture.gesture(300, [[100, 200], [300, 400], [500, 200]]);gestures(strokes)
参数:
strokes多个 stroke;也可写成gestures(stroke1, stroke2, ...)
每个 stroke 支持两种写法:
- 数组:
[startTime, duration, [x1,y1], [x2,y2], ...] - 对象:
{ startTime, duration, points: [[x,y], ...] }
startTime 是相对本批手势开始的毫秒偏移。
返回: {boolean} 是否完成
用于双指捏合、放大等组合手势。
javascript
let cx = Device.width() / 2;
let cy = Device.height() / 2;
// 双指捏合
Gesture.gestures([
[0, 400, [cx - 200, cy], [cx - 40, cy]],
[0, 400, [cx + 200, cy], [cx + 40, cy]]
]);
// 双指外扩(对象写法)
Gesture.gestures(
{ startTime: 0, duration: 400, points: [[cx - 40, cy], [cx - 200, cy]] },
{ startTime: 0, duration: 400, points: [[cx + 40, cy], [cx + 200, cy]] }
);back()
返回: {boolean} 是否发出返回
javascript
Gesture.back();home()
返回: {boolean} 是否发出 Home
回到桌面。
javascript
Gesture.home();recents()
返回: {boolean} 是否打开最近任务
javascript
Gesture.recents();