Script 1.8.1

compareColorEx (重载二)

原型:

compareColorEx(multipleColor, sim)

是否支持多设备:

不支持

对应的 REST API:

同时比较指定的多个坐标点的颜色(compareColorEx重载二 )

描述:

同时比较多个坐标点的颜色,支持多色、颜色范围、相似度比较,这里我们都用16 进制颜色,如"0x001122" 。
注意:
不是给定的多个坐标之间的颜色比较,是多个坐标的颜色和指定颜色比较,compareColorEx (重载二)与compareColorEx (重载一)的区别在于multipleColor的格式不一样。

参数:

multipleColor: 二维数组,格式为[[X 坐标,Y 坐标,16 进制颜色],[X 坐标,Y 坐标,16 进制颜色],...], 多个点之间用","号分隔,比如" [100|200|0xffffff|0xaabbcc-0x000000],[300|500|0xffffff]”。其中,
X 坐标:整型
Y 坐标:整型,
16 进制颜色: 字符串,指定的 16 进制颜色 ,多个颜色用"|"号分隔, 支持颜色范围,如" 0x0000ff-0xaabbcc|0x001122 "。
Sim: 相似度,仅作用于单个颜色,对颜色范围无用。
对于指定的单个颜色,如果屏幕上指定坐标点的颜色与给定的16 进制颜色差异在相似范围以内,则认为两种颜色相同。相似度取值范围为[0.0, 1.0],1表示相识度最高。

返回值:

布尔型: 如果给定的16进制颜色中有屏幕坐标的颜色,则返回true,否则返回false。
注意:
同时比较多个坐标点的颜色是否为指定的颜色,只要其中一个给定的16进制颜色中没有坐标的颜色,就返回false。

示例:

两个坐标的颜色与指定的颜色比较。
屏幕坐标(32,621) 的颜色与给定的16进制颜色(0x9c1f8|0xff0000-0xffffff)比较
屏幕坐标(77,421) 的颜色与给定的16进制颜色(0x6fa913|0x9c1f8)比较
下面介绍两种方法:

//获取当前主控设备对象
var device = Device.getMain();
//方法一
var mulColor = new Array(); //调用数组构造函数生成一个名为mulColor的数组
var sim = 1; 
//以数组的形式定义第一个屏幕坐标点,并将unite1的值赋值给数组mulColor[0]
var unite1 = new Array();
var x1 = 32;
var y1 = 621;
var color1 = "0x4a90d5|0xff0000-0xffffff";
var unite1 = [x1,y1,color1]
mulColor[0] = unite1;

//以数组的形式定义第二个屏幕坐标点,并将unite2的值赋值给数组mulColor[1]
var unite2 = new Array();
var x2 = 77;
var y2 = 421;
var color2 = "0x579cdf|0x9c1f8";
var unite2 = [x2,y2,color2]
mulColor[1] = unite2;
print(mulColor);

//比较颜色,如果两个坐标颜色都跟指定的16进制颜色匹配成功,则输出匹配成功,否则输出lastError()
var res = device.compareColorEx(mulColor,sim);
if(!res){
    print(lastError());
} else {
    print("匹配成功");
}

//方法二:
//以数组的形式定义三个屏幕坐标点
var colRules = [[32,621,"0x4a90d5|0xff0000-0xffffff"], [77,421,"0x579cdf|0x9c1f8"], [80,225,"0x589dde"]];

//比较颜色,如果三个坐标颜色都跟指定的16进制颜色匹配成功,则输出匹配成功,否则输出lastError()
var ret = device.compareColorEx(colRules, sim);
if(!res){
    print(lastError());
} else {
    print("匹配成功");
}