模拟操作
## swipeEx(x1, y1, x2, y2, duration)
>w 非官方接口
仿真随机带曲线滑动:
一般用于过水平滑块,刷视频滑动等
```JavaScript
swipeEx(100, 150, 300, 160, random(600,1000)); //从起点(100, 150)随机耗时600-1000毫秒滑动到终点(300, 160)
//仿真随机带曲线滑动
//qx, qy, zx, zy, time 代表起点x,起点y,终点x,终点y,过程耗时单位毫秒
function swipeEx(qx, qy, zx, zy, time) {
try {
var xxy = [time];
var point = [];
var dx = []
dx[0] = {"x": qx,"y": qy};
dx[1] = {"x": random(qx - 100, qx + 100),"y": random(qy, qy + 50)};
dx[2] = {"x": random(zx - 100, zx + 100),"y": random(zy, zy + 50),};
dx[3] = {"x": zx,"y": zy};
for (let i = 0; i < 4; i++) point.push(dx[i])
for (let i = 0; i < 1; i += 0.08) {
xxyy = [parseInt(bezier_curves(point, i).x), parseInt(bezier_curves(point, i).y)]
xxy.push(xxyy);
}
if(isAndroid7) gesture.apply(null, xxy);
} catch (error) {
log('[错误]swipeEx',error.message + '\n\r' + error.stack);
}
};
function bezier_curves(cp, t) {
var cx = 3.0 * (cp[1].x - cp[0].x);
var bx = 3.0 * (cp[2].x - cp[1].x) - cx;
var ax = cp[3].x - cp[0].x - cx - bx;
var cy = 3.0 * (cp[1].y - cp[0].y);
var by = 3.0 * (cp[2].y - cp[1].y) - cy;
var ay = cp[3].y - cp[0].y - cy - by;
var tSquared = t * t;
var tCubed = tSquared * t;
var result = {"x": 0,"y": 0};
result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
return result;
};
```
## 拉出通知栏
```js
//表示从位置(500, 10)滑动到位置(500, 1000), 持续两秒
swipe(500, 10, 500, 1000, 2000); //方法1
notifications() //方法2
quickSettings() //方法3(下拉通知栏到底)
```
## 双指捏合
```js
setScreenMetrics(1080, 1920);
gestures([500, [800, 300], [500, 1000]],
[500, [300, 1500], [500, 1000]]);
```
## 三指捏合
```js
"auto";
setScreenMetrics(1080, 1920);
//如果你使用的是MIUI,此脚本运行后会出现桌面多屏幕编辑
home();
sleep(1500);
gestures([350, [800, 300], [500, 1000]],
[350, [300, 1500], [500, 1000]],
[350, [300, 300], [500, 1000]]);
```
## 三指下滑
```js
"auto";
/**
* 同时模拟三个手势:
* 从(300, 400)到(300, 1400)
* 从(600, 400)到(600, 1400)
* 从(900, 400)到(900, 1400)
* 每一个的时长都为350毫秒
*/
gestures([350, [300, 400], [300, 1400]],
[350, [600, 400], [600, 1400]],
[350, [900, 400], [900, 1400]]
);
```
## 心形手势
```js
"auto";
toast("开启开发者选项-指针位置或者在画画软件才能查看效果");
setScreenMetrics(1080, 1920);
var points = [10000];
var interval = 0.1;
var x0 = 600;
var y0 = 1000;
var a = 120;
for(var t = 0; t < 2 * Math.PI; t += interval){
var x = x0 + a * (2 * Math.cos(t) - Math.cos(2 * t));
var y = y0 + a * (2 * Math.sin(t) - Math.sin(2 * t));
points.push([parseInt(x), parseInt(y)]);
}
gesture.apply(null, points);
```