陆陆侠的生活

奇迹暖暖快捷搜索 - Auto.js的初步尝试

2019/02/17

Auto.js是一款安卓平台的,基于JavaScript语言的自动操作软件。我最近初步尝试用它编写了手游奇迹暖暖的拼音首字母快捷搜索小插件。

Auto.js发布于酷安平台,可以通过在手机或电脑上编写js脚本,以实现一些自动化操作。因为其强大和简单容易上手的特点,Auto.js一经面世,就受到了广大酷友的喜爱。各种例如微信跳一跳、QQ自动点赞、支付宝自动偷能量的脚本层出不穷。前不久的QQ抢福袋活动中,我也使用了区域着色的功能,将“天降福运”和“灯笼高高挂”的分数刷到了正常游戏难以抵达的高度。

天降福运 脚本:

requestScreenCapture();  //获取截图权限
while(true){
    var img = captureScreen();  //进行截图
    var red = findColor(img, "#f46262", {  //区域着色,以下同理
        region: [430, 740, 200, 100],
        threshold: 4
    });
    var blue = findColor(img, "#399eb0", {
        region: [430, 740, 200, 100],
        threshold: 4
    });
    if(red){
        click(540,1800);  //点击坐标位置,以下同理
    }else if(blue){
        click(180,1800);
    }else{
        click(900,1800);
    }
    sleep(100);
}

灯笼高高挂 脚本:

requestScreenCapture();
while(true){
    var img = captureScreen();
    var hit = findColor(img, "#f7775e", {
        region: [210, 260, 40, 40],
        threshold: 4
    });
    if(hit){
        click(540,960);
    }
}

同时,在软件的不断完善中,Auto.js也新增了许多新功能,最新的版本中还添加了例如悬浮窗、UI界面、HTTP模块之类的功能,甚至可以独立开发出简单的程序了,下面我就简要介绍一下我使用Auto.js编写的“奇迹暖暖拼音首字母快捷搜索工具”。

奇迹暖暖拼音首字母快捷搜索工具

业务逻辑

点击“输入要搜索的衣服/套装/背景名”按钮后,弹出搜索框,在搜索框输入内容后,自动检索匹配拼音首字母的服饰,点击服饰后,自动按下完成输入按钮。

实现方法

由于奇迹暖暖是cocos引擎的游戏,游戏内的控件是封装起来无法读取的,但实际游戏中,真正用于输入的是安卓自带的系统控件,所以可以被Auto.js读取到,这也给了我们制作辅助工具的可能性,如果游戏没有提供系统自带控件的话,就无法完成对输入框进行读写的操作。

console.show();  //显示控制台,方便调试
toast("脚本已运行");  //向手机发出一条提示
var oldtext,newtext,data;
var w = floaty.window(  //建立一个XML布局的悬浮窗
    <frame gravity="center">
        <list id="list">
            <text id="text" text="{{text}}" textSize="16sp" textColor="white"></text>
        </list>
    </frame>
);
w.setPosition(40, 330);  //设置悬浮窗的显示位置,参数为X、Y轴
w.list.on("item_click",function(item, i, itemView, listView){  //监听id为list的控件,事件为成员被点击(我猜的)
    toast(item["text"]);
    setText(0,item["text"]);  //寻找屏幕中第一个输入框,写入文本
    className("Button").findOne().click();  //寻找一个类型为按钮的控件,并点击
});
setInterval(function(){  //因为目前似乎无法监听非自身创建的控件,所以需要循环查找
    if(text("输入要搜索的衣服/套装/背景名").exists()){  //查找该文本控件是否存在,即是否进入查询界面
        newtext = className("EditText").findOne().text();  //读取输入框中的文本
        if(newtext == "" ){  //未输入则隐藏悬浮窗
            w.setSize(0, 0);  //设置悬浮窗的长宽为0,即隐藏悬浮窗
        }else if(newtext != oldtext){  //用于让下面部分的代码只执行一次
            var res = http.get("https://llx.life/works/nikki.php?key=" + newtext);  //向php文件发送get请求
            if(res.statusCode != 200){
                toast("请求失败: " + res.statusCode + " " + res.statusMessage);
            }else{
                data = res.body.json();  //获取接受到的内容并转为json对象
                if(data){  //如对象存在则显示悬浮窗
                    w.setSize(500, 700);
                    ui.run(function(){  //建立UI线程,更新悬浮窗中的内容需要用到这个函数
                        w.list.setDataSource(data);  //更改id为list的控件的内容
                    });
                }else{
                    w.setSize(0, 0);
                }
            }
        }
        oldtext = newtext;
    }else{
        w.setSize(0, 0);
    }
},300);

这个脚本综合运用到了Auto.js中一些比较新的函数,其中有一些是测试版才有的。甚至开发文档中还没有更新,是我摸索测试版中的示例代码同时加群提问才得知的,同时这个脚本也存在速率上的问题,仍需改进或许也有相对更好的方案。

总结

Auto.js是一款可玩性极高的安卓软件,如果你会使用JavaScript语言,同时对于按键精灵等软件也有兴趣的话,也不妨下载一个试一下。有了它,你就可以十分方便的完成一些机械性的操作,或者像我一样尝试一下在微信小游戏、QQ小游戏里刷取高分,制霸排行榜。

外部链接

Auto.js官网:https://hyb1996.github.io/AutoJs-Docs/#/

Article

奇迹暖暖快捷搜索 - Auto.js的初步尝试

Auto.js是一款安卓平台的,基于JavaScript语言的自动操作软件。我最近初步尝试用它编写了手游奇迹暖暖的...

显示更多

Video

Weibo

チカ千花