$ag - 图色框架

  • 更新时间:2025-12-13 11:58:43

图色框架

setDebug(debug)

开启调试模式

默认是开启调试模式的(推荐开启:更加直观的看到执行效果),找到图片则会在屏幕上绘制图片的位置,找到颜色则绘制点

  • 参数 : debug {boolean} 是否开启调试模式

findImg(options)

寻找图片

自动截屏一次,然后在传入的region(范围)中找图片,如果region为空则全屏寻找,不管找没找到,都会回收掉资源,并且返回结果

  • 参数 : options 参数 {object} 配置参数

  • 返回 : 位置 {point} 返回找到位置的中心点

  • 版本 : 1.0.0

//参数:
let options = {
    path:"",//图片路径
    region:[],//(可选)找图的范围:必须是4位,且后两位不能为0
    similar:0.8,//(可选)找图的相似值:不能低于(最小值:0.3)
    trans:false,//(可选)是否找透明背景的图片
};
//使用:
let point = $ag.findImg({
    path:"/sdcard/Pictures/t01.png",
    region:[200,200,300,500],
});

findImgClick(options)

寻找图片并且点击

先截屏一次,如果图片找到了,那么就点击这个图片位置中心点

  • 参数 : options {obj} 参数

  • 返回 : {point} 位置

  • 版本 : 1.0.0

//参数:
let options = {
    path:"",//图片路径
    region:[],//(可选)找图的范围:必须是4位,且后两位不能为0
    similar:0.8,//(可选)找图的相似值:不能低于(最小值:0.3)
    trans:false,//(可选)是否找透明背景的图片
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
};
//使用:
let point = $ag.findImgClick({
    path:"/sdcard/Pictures/t01.png",
    region:[200,200,300,500],
});

waitImg(options, failCallback)

等待图片

截屏后找图没找到就会执行回调一次,然后就继续截屏并且找图

值得注意的是ensure如果设置了true,那么你就要了解ensureMode的含义:

1.ensureMode:"once":假如传入的ensureTimes是3,那么就会循环截屏3次,只要其中有1次成功,那么就会返回找到的位置 2.ensureMode:"more":假如传入的ensureTimes是3,那么就会循环截屏3次,必须保证3次全部都成功,那么就会返回找到的位置

确认执行完毕之后,会返回找到的位置,如果没有找到,则继续等待图片,每次找图都会执行确认流程。

整体流程是: 1.先截屏一次 2.执行确认流程(如果设置确认流程ensure为false,就执行正常找图流程) 3.如果确认流程通过(确认流程会重复截屏ensureTimes次,并且按照ensureMode处理结果),那么就返回找到的位置 4.如果确认流程没有通过(执行回调),那么就继续截屏并且执行回到1

  • 参数 : options {object} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败(或确认流程失败)后回调

  • 返回 : {point} 找到图片的中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800 //(可选)等待延迟
}
//使用:
let point = $ag.waitImg({
    path:"/sdcard/Pictures/t01.png",
    region:[200,200,300,500],
});

waitImg(options)

等待图片

  • 参数 : options {object} 参数

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800 //(可选)等待延迟
}

waitImgClick(options, failCallback)

等待图片并点击

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

waitImgClick(options)

等待图片并点击

  • 参数 : options {object} 配置

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],
    similar:0.8,
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:true,//可选
    ensureMode:"once",//可选
    ensureTimes:3,//可选
    ensureDur:300,//可选
    waitTimes:75,//可选
    waitDur:800, //可选
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

findImgInRegions(options)

寻找图片

给定一个范围数组,只能在指定的范围数组当中查找对应的图片,找到后,返回图片的位置和数组下标

执行流程:先截屏,然后循环每个范围数组,对小图片进行查找,找到之后就立马返回

使用场景:比如关闭广告的[关闭按钮],有时候这个关闭按钮出现在右上角,有时候出现在中间下方的位置,在这种不确定关闭图片位置的情况下,使用此函数,将可能出现关闭按钮的位置全部传入,找到后即可返回位置。

  • 参数 : options 参数

  • 返回 : {point point,int index} 位置与范围下标

let options = {
    path:"", //必填:图片路径
    region:[[],[],[]], //必填:多个范围数组
    similar:0.8, //可选
    trans:false, //可选(是否寻找透明图)
}

findImgsOne(options)

寻找图片

传入多组图片数据,截屏后找图,只要其中有一组数据成功找到,则直接返回结果

适用的场景:比如我们每次打开游戏或者应用界面的时候,我们并不知道它会不会弹出来一个更新界面或者广告界面,此时我们可以使用次函数,把可能出现的界面情况都传入进去,只要找到了,那么就会返回执行结果,我们就能知道是哪一个界面了。

  • 参数 : options {obj} 参数

  • 返回 : {point point,int index} 结果是一个对象,其中包含point和index两个属性,point是图片中点位置,index是图片下标

let options = {
    data:[
    {
        path:"",//必填
        region:[],//必填
        similar:0.8,//可选(默认0.8)
        trans:false,//可选(是否寻找透明图)
    },
    {
        //...多个这样的数据
    }
    ]
}

waitImgsOne(options)

等待图片

传入多组图片数据,截屏后找图,只要其中有一组数据成功找到,则直接返回结果

适用的场景:比如我们每次打开游戏或者应用界面的时候,我们并不知道它会不会弹出来一个更新界面或者广告界面,此时我们可以使用次函数,把可能出现的界面情况都传入进去,只要找到了,那么就会返回执行结果,我们就能知道是哪一个界面了。

  • 参数 : options {obj} 参数

  • 返回 : {point point,int index} 图片中点位置和下标

let options = {
    data:[
    {
        path:"",//必填
        region:[],//必填
        similar:0.8,//可选(默认0.8)
        trans:false,//可选(是否寻找透明图)
    },
    {
        //...多个这样的数据
    }
    ],
    waitTimes:75,//选填(默认75)
    waitDur:800 //选填(默认800)
}

waitImgsOne(options, failCallback)

等待图片

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point point,int index} 图片中点位置和下标

let options = {
    data:[
    {
        path:"",//必填
        region:[],//必填
        similar:0.8,//可选(默认0.8)
        trans:false,//可选(是否寻找透明图)
    },
    {
        //...多个这样的数据
    }
    ],
    waitTimes:75,//选填(默认75)
    waitDur:800 //选填(默认800)
}

clickImgWhileNot(options)

循环点击图片(直到图片消失)

使用场景:比如在一些比较卡顿的应用或游戏中,我希望点击关闭按钮,但是游戏界面比较卡顿,可以使用此函数不断的点击,直到关闭成功

  • 参数 : options {obj} 参数

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

clickImgWhileNot(options, failCallback)

循环点击图片(直到图片消失)

使用场景:比如游戏人物打开背包后要存放苹果,此时我们可以使用此函数不断的点击苹果,把它存放到背包中

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    trans:false,//(可选)是否寻找透明背景的图片
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

featureWaitImg(options)

等待图片特征

  • 参数 : options {object} 配置

  • 返回 : {point} 找到的中心位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
}

featureWaitImg(options, failCallback)

等待图片特征

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
}

featureImgClick(options)

等待图片特征并点击

  • 参数 : options {object} 配置

  • 返回 : {point} 返回位置

let options = {
    path:"",
    region:[],
    similar:0.8,
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

featureWaitImgClick(options, failCallback)

等待图片特征并点击

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

let options = {
    path:"",
    region:[],
    similar:0.8,
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

featureWaitImgClick(options)

等待图片并点击

  • 参数 : options {object} 配置

  • 返回 : {point} 找到的位置中点

let options = {
    path:"",
    region:[],
    similar:0.8,
    ensure:true,//可选
    ensureMode:"once",//可选
    ensureTimes:3,//可选
    ensureDur:300,//可选
    waitTimes:75,//可选
    waitDur:800, //可选
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

featureImgsOne(options)

多图中找一个

传入多个特征图片参数,如果找到了其中的一个就会返回结果

  • 参数 : options {object} 配置

  • 返回 : {point:point,index:index} 位置与下标

let options = {
    data:[
    {
        path:"",//必填
        region:[],//必填
        similar:0.8,//可选(默认0.8)
    },
    {
        //...多个这样的数据
    }
    ]
}

featureWaitImgsOne(options)

等待多个特征中的一个

  • 参数 : options {object} 配置

  • 返回 : {point:point,index:index} 特征结果位置中点和下标

let options = {
    data:[
    {
        path:"",//必填
        region:[],//必填
        similar:0.8,//可选(默认0.8)
    },
    {
        //...多个这样的数据
    }
    ],
    waitTimes:75,//(选填)等待次数
    waitDur:800,//(选填)每次等待延迟
}

featureWaitImgsOne(options, failCallback)

等待图片

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

featureImgInRegions(options)

点击图片特征直到消失

  • 参数 : options {object} 配置

  • 返回 : {point} 找到的中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

clickImgWhileFeatureNot(options)

点击图片特征直到消失

  • 参数 : options {object} 配置

  • 返回 : {point} 找到的中点位置

let options = {
    path:"",
    region:[],//(可选)
    similar:0.8,//(可选)
    ensure:false,//(可选)找到后是否要进行确认
    ensureMode:"once",//(可选)确认的模式是多次(more)还是一次
    ensureTimes:3,//(可选)确认找到的次数
    ensureDur:300,//(可选)每次确认的间隔时间
    waitTimes:75,//(可选)等待次数
    waitDur:800, //(可选)等待延迟
    px: 0, //(可选)点击位置相对于中点的x偏移量
    py: 0, //(可选)点击位置相对于中点的y偏移量
}

bloodPercent(options)

血条检测

主要根据传入的颜色(可传入多个颜色以,分割)和血条的范围来计算出血条的百分比

  • 参数 : options {object} 参数

  • 返回 : {int} -1-100的值(为-1则表示没有血量)

let options = {
    region: [], //(必填)血条范围
    color: "#ff0000,#ff0000", //(必填)可传入多个
    threshold:5 //(可选)偏差值(默认5)
}
let p = $ag.bloodPercent(options);

findColor(options)

找色

  • 参数 : options {object} 参数

  • 返回 : {Point} 坐标

let options = {
    region: [], //(必填)范围
    color: "#ff0000,#ff0000", //(必填)颜色(多个用,分割)
    threshold:5 //(可选)偏差值(默认5)
}

findMultiColors(options)

多点找色

多点找色并不能很好的适配全分辨率,因为把颜色点相对位置写死了,而不同的设备中,相对点位不同

  • 参数 : options {object} 参数

  • 返回 : {point} 位置

let options = {
    multiColors:[
        [1,2,"#FF0000",5],//每个数据元都是px,py,color,threshold组成的
        [1,2,"#FF0000",5],//px,py是相对于传入的主颜色的偏移位置
        //...多个点色
    ],
    color:"#000000",
    threshold:5,
    region:[],
}

findMultiColorsClick(options)

多点找色

  • 参数 : options {object} 参数

  • 返回 : {point} 位置

let options = {
    multiColors:[
        [1,2,"#FF0000",5],//每个数据元都是px,py,color,threshold组成的
        [1,2,"#FF0000",5],//px,py是相对于传入的主颜色的偏移位置
        //...多个点色
    ],
    color:"#000000",
    threshold:5,
    region:[],
    px:0, //(可选)点击位置x偏移量
    py:0 //(可选)点击位置y偏移量
}

waitMultiColors(options)

等待多点色

  • 参数 : options {object} 参数

  • 返回 : {point} 位置

waitMultiColorsClick(options)

等待多点色

  • 参数 : options {object} 参数

  • 返回 : {point} 位置

waitMultiColors(options, failCallback)

等待多点色

  • 参数 : options {object} 参数

  • 参数 : failCallback {(curTimes)=>{}}回调

  • 返回 : {point} 位置

let options = {
    multiColors:[],
    color:"#000000",
    threshold:5,
    rect:null,
    ensure:false,
    ensureMode:"once",
    ensureTimes:3,
    ensureDur:1000,
    waitTimes:50,
    waitDur:1000,
}

waitMultiColorsClick(options, failCallback)

等待图片

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

findColorClick(options)

找色点击

  • 参数 : options {object} 参数

  • 返回 : {point} 位置

waitColor(options, failCallback)

等待颜色

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

let options = {
    color:"",
    region: [],//(可选)找色的范围,建议填写上
    threshold:5,
    ensure:false,
    ensureMode:"once",
    ensureTimes:3,
    ensureDur:1000,
    waitTimes:50,
    waitDur:1000,
}

waitColor(options)

等待颜色

  • 参数 : options {obj} 参数

  • 返回 : {point} 中点位置

let options = {
    color:"",
    region: [],//(可选)找色的范围,建议填写上
    threshold:5,
    ensure:false,
    ensureMode:"once",
    ensureTimes:3,
    ensureDur:1000,
    waitTimes:50,
    waitDur:1000,
}

waitColorWhileNot(options, failCallback)

等待颜色消失

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

let options = {
    color:"",
    region: [],//(可选)找色的范围,建议填写上
    threshold:5,
    ensure:false,
    ensureMode:"once",
    ensureTimes:3,
    ensureDur:1000,
    waitTimes:50,
    waitDur:1000,
}

waitColorClick(options, failCallback)

等待颜色

  • 参数 : options {obj} 参数

  • 参数 : failCallback {(curTimes)=>{}} 找图失败后回调

  • 返回 : {point} 中点位置

waitColorClick(options)

等待颜色

  • 参数 : options {obj} 参数

  • 返回 : {point} 中点位置

findColorInRegions(options)

在多个区域中找色

  • 参数 : options {object} 参数

  • 返回 : {point} 中点位置

let options = {
    color:"",
    threshold: 5,
    region:[[],[],[]],//多个范围
}
let result = $ag.findColorInRegions(options);

findColorsOne(options)

找到一种颜色

  • 参数 : options {object} 参数

  • 返回 : {point} 中点位置

setScreen(w, h)

设置屏幕信息(开发者环境)

  • 参数 : w {int} 宽度

  • 参数 : h {int} 高度

closeDraw()

关闭绘制的图案

screenInfo()

获得当前屏幕信息

  • 返回 : {string} 屏幕信息

setDevDensity(devDensity)

设置开发环境屏幕密度

注意:此函数用于分辨率适配

  • 参数 : devDensity 开发环境下的屏幕密度

setAdapt(usable)

是否启动分辨率适配

  • 参数 : usable {boolean} 启用分辨率适配