1.基于控件法(常用)
text().findOne();
desc().findOne();
.setText("给输入框设置内容");
.find();//获取所有满足条件的控件
.parent();//获取父元素
.child(i);//第i+1个子元素从0开始
.children()//所有子元素集合,返回值数组
.exists();//判断控件是否存在返回true或false,不会阻塞线程
.bounds().centerX();//控件中心点横坐标
.bounds().centerY();//控件中心点纵坐标
2.基于坐标
setScreenMetrics(1080, 2280);//设置点击坐标对应的屏幕分辨率
click(x,y)
3.控件坐标结合
var el=text("粉丝").findOne();
click(el.bounds().centerX(),el.bounds().centerY());
4.启用子线程(耗时操作)
threads.start(function(){
} );
5.关闭所有脚本
engines.stopAllAndToast();
6.本地存储
var storage = storages.create(name);//name:自定义数据库名
storage.put(key,value);
storage.get(key);
7.http请求
http.post(url,data,options,callback(res,err));//options可选一些其他配置例如请求头,callback回调函数
例如:
http.post(url,{
type:1
}, {
headers:{
token:token
},
},(res,err)=>{
var r=res.body.string();
r=JSON.parse(r);//返回数据转化为json格式
});
8.文件下载,并写入内存卡
var res=http.get(url);
files.writeBytes(filepath,res.body.bytes() );//filepath:保存在本地的路径
9.取色
(1)获取某个坐标点颜色
images.requestScreenCapture(false); //请求截屏,需手动授权
var img = captureScreen();
var color= images.pixel(img, x, y);//x,y横纵坐标
color=colors.toString(color);//颜色值转化为字符串
(2)判断l两个颜色是否相似
colors.isSimilar(color1,color2)//返回true或false
常用demo
1.音量+ -键,关闭脚本
threads.start(function(){ //开启子线程
//监听音量键-,关闭所有脚本
events.observeKey();
events.onKeyDown("volume_down",function(event){//音量+改为volume_up
engines.stopAllAndToast();
});
} )
2.开启一个可拖拽的悬浮窗,点击悬浮窗按钮停止脚本运行
threads.start(function(){
setInterval(()=>{}, 10000);//需设置一个定时器保持脚本不会停止运行,悬浮窗才不会被关闭
initFloatWin()//加载悬浮窗
} )
/**
* 加载悬浮窗
*/
function initFloatWin() {
var window = floaty.window(
);
var execution = null;
//记录按键被按下时的触摸坐标
var x = 0, y = 0;
//记录按键被按下时的悬浮窗位置
var windowX, windowY;
//记录按键被按下的时间以便判断长按等动作
var downTime;
window.action.setOnTouchListener(function(view, event){
switch(event.getAction()){
case event.ACTION_DOWN:
x = event.getRawX();
y = event.getRawY();
windowX = window.getX();
windowY = window.getY();
downTime = new Date().getTime();
return true;
case event.ACTION_MOVE:
//移动手指时调整悬浮窗位置
window.setPosition(windowX + (event.getRawX() - x),
windowY + (event.getRawY() - y));
//如果按下的时间超过1.5秒判断为长按,退出脚本
if(new Date().getTime() - downTime > 1500){
exit();
}
return true;
case event.ACTION_UP:
//手指弹起时如果偏移很小则判断为点击
if(Math.abs(event.getRawY() - y) < 5 && Math.abs(event.getRawX() - x) < 5){
onClick();
}
return true;
}
return true;
});
}
```javascript
function onClick(){
engines.stopAllAndToast();
}