Skip to content

手势 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} 起点 x
  • startY {number} 起点 y
  • endX {number} 终点 x
  • endY {number} 终点 y
  • duration {number} 滑动毫秒数

返回: {boolean} 是否完成滑动

javascript
Gesture.swipe(100, 200, 500, 400, 200);

swipeHuman(sx, sy, ex, ey, duration) ​

参数:

  • sx {number} 起点 x
  • sy {number} 起点 y
  • ex {number} 终点 x
  • ey {number} 终点 y
  • duration {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();

相关 ​