autojs奇葩代码的简单介绍

发布时间:2023-12-08

autojs奇葩代码的简单介绍

更新:<time datetime="2022-11-14 11:37">2022-11-14 11:37</time>

本文目录一览:

  1. autojs脚本实现自动接听微信、QQ音视频通话
  2. autojs死巡环内存爆炸
  3. 求把电脑用的按键精灵代码转译为auto.js用的代码
  4. [auto.js中怎么循环好?我用百度复制的function auto()过一段时间就熄火了,代码就是下边的](#auto.js中怎么循环好?我用百度复制的function auto()过一段时间就熄火了,代码就是下边的)

autojs脚本实现自动接听微信、QQ音视频通话

//在autojs中对脚本设置为一分钟运行一次。需开启无障碍里的autojs,在最近任务锁定autojs并且允许autojs后台自启动运行(可查询自己手机怎么开启) //小图.jpg可以用手机截屏后用手机自带图片编辑功能裁切出含“接受”部分的小图并放下面的目录下 //鉴于autojs的截图函数的不稳定性,可以把代码截的图用代码images.save()保存到手机上也用手机自带图片编辑功能裁切一张小图与手机自带截屏功能截的图两者都加入判断以提高成功率 //这个主要针对网上已有的antoanswer.app在竖屏状态下运行稳定,却无法在横屏时自动接听而设计。竖屏状态下建议下载autoanswer.app(注意不同版本的效果不一样,要找到适合自己手机的版本)

if(!requestScreenCapture()){
    toast("请求截图失败");
    exit();
}
//requestScreenCapture(true);
sleep(2000);
var img=captureScreen();
var temp=images.read("/storage/emulated/0/小图.jpg");
var p=findImage(img,temp);
if(p){
    click(p.x+temp.getWidth()/2,p.y+temp.getHeight()/2);
}else{
}

autojs死巡环内存爆炸

内存溢出是一种程序运行会出现的错误,当程序所需要的内存大于剩余内存(机器能提供给你的内存),就会抛出内存溢出的错误

var obj = {}
for (var i = 0; i < 100000000; i++) {
    obj[i] = new Array[100000000]
}

内存泄漏 占用的内存没有及时的释放从而失去控制,从而造成内存的浪费。内存泄漏多了就容易引发内存溢出。 常见的内存泄漏案例:

  1. 意外的全局变量
function fn() {
    var name = '张三'
    var age = 18
    address = '上海' // 没有用var定义,这时候address是全局的
}
fn() // 因为address会被变量提升到了全局变量,fn调用完成后address还保留在内存中
  1. 没有及时清除定时器
// 没有及时清理定时器
var timer = setInterval(() => {
    console.log(new Date())
}, 1000);
// clearInterval(timer) 及时清理定时器
  1. 没有及时清理闭包
// 函数执行完后, 函数内的局部变量没有释放, 占用内存时间会变长,容易造成内存泄露
function fun() {
    var a = 5
    function getA() {
        return a
    }
    return getA
}
var f = fun()
f() // 5
// f = null 让内部函数成为垃圾对象,释放闭包
  1. 没有及时清理清理dom元素的引用
var dom = document.getElementById('box')
document.body.removeChild(dom) // dom删除后,下面依然能打印出整个div
console.log(dom) // div id="box"嘿嘿嘿/div
dom = null
console.log(dom) // 释放资源,解除引用
  1. addEventListener 监听事件的解除,监听的时候addEventListener,在不监听的时候要使用removeEventListener。

求把电脑用的按键精灵代码转译为auto.js用的代码

主要是Goto 继续——Rem 继续 如何转化和 颜色判断中的“如果是则执行A,否则执行B”怎么写 其他的没问题了 下面是参考代码 Rem 继续 MoveTo 826, 296 Delay 1000 LeftClick 1 Delay 5000 IfColor 928,663,"232352",2 Then MoveTo 928,663 Delay 3000 LeftClick 1 Else MoveTo 706, 577 LeftClick 1 MoveTo 801, 249 Delay 3000 LeftClick 1 MoveTo 728, 577 Delay 3000 LeftClick 1 MoveTo 614, 447 Delay 3000 LeftClick 1 MoveTo 739, 291 Delay 3000 LeftClick 1 MoveTo 952, 652 Delay 3000 LeftClick 1 End If Delay 120000 For 20 Delay 5000 IfColor 1140,680,"FFFFFF",0 Then MoveTo 1145, 678 LeftClick 1 Delay 15000 Goto 继续 Else MoveTo 790, 450 Delay 3000 LeftClick 1 MoveTo 728, 580 Delay 3000 LeftClick 1 End If Next

auto.js中怎么循环好?我用百度复制的function auto()过一段时间就熄火了,代码就是下边的

exit() 执行了。如果我没猜错的话,exit里面有throw语句;或者你里面的某一个函数报错了,报错不是用console.error 而是用了throw语句,或者直接原生报错。改良一下应该是。

function auto() {
    //循环代码
    try {
        //请求截图
        if (!requestScreenCapture()) {
            toast("请求截图失败");
            exit();
        }
        //截图命名为9.png
        captureScreen("/sdcard/9.png");
        sleep(2000)
        // 读取本地图片/sdcard/1.png
        var img = images.read("/sdcard/9.png");
        // 判断图片是否加载成功
        if (!img) {
            toast("没有该图片");
            exit();
        }
        // 在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,指定找色临界值为4
        var point = findColor(img, "#70bdc8", {
            region: [1768, 137, 50, 20],
            threshold: 4
        });
        if (point) {
            toast("找到啦:");
            click(1909, 153)
            sleep(7000)
        } else {
            toast("没找到");
        }
    } catch (e) {
        console.error(e)
    } finally {
        //多少秒执行一次 上面的参数就填 秒数乘1000 上述 一秒调用一次
        setTimeout(auto, 120000);
    }
}
auto();

还有sleep应该不起作用,js没有sleep方法。正确函数应该是

async function auto() {
    //循环代码
    try {
        //请求截图
        if (!requestScreenCapture()) {
            toast("请求截图失败");
            exit();
        }
        //截图命名为9.png
        captureScreen("/sdcard/9.png");
        await new Promise(rs=>{
            setTimeout(()=>{
                rs("ok")
            },2000)
        })
        // 读取本地图片/sdcard/1.png
        var img = images.read("/sdcard/9.png");
        // 判断图片是否加载成功
        if (!img) {
            toast("没有该图片");
            exit();
        }
        // 在该图片中找色,指定找色区域为在位置(400, 500)的宽为300长为200的区域,指定找色临界值为4
        var point = findColor(img, "#70bdc8", {
            region: [1768, 137, 50, 20],
            threshold: 4
        });
        if (point) {
            toast("找到啦:");
            click(1909, 153);
            await new Promise(rs=>{
                setTimeout(()=>{
                    rs("ok")
                },7000)
            })
        } else {
            toast("没找到");
        }
    } catch (e) {
        console.error(e)
    } finally {
        //多少秒执行一次 上面的参数就填 秒数乘1000 上述 一秒调用一次
        auto();
        // setTimeout(auto, 120000);
    }
}
auto();