【用复制粘贴让脚本动起来(二)】根据画面点击特定坐标

反思笔记 2022-2-9

想法


用按键精灵在《【用文本文件让脚本动起来】实现简单的屏幕点击》的源码中已经示范根据画面点击特定的坐标,不过那是将坐标参数保存到另外一个文本中,这样会在实际开发中带来不少麻烦。所以这次会把坐标参数CmpColorEx颜色组合并到一起。

坐标参数
颜色组
复制到一个文本
File.WriteLines
Script

思路


  1. 用按键精灵助手的抓抓工具选取好坐标后,将颜色组、坐标copy到txt中
    在这里插入图片描述
  2. 复制的颜色组两边个带一个",需要用UTF8.InStrUTF8.Mid函数实现获取中间的字符
    UTF8.InStr :获取指定字符串在另一个字符串第一次出现的位置
    UTF8.InStr(开始位置, 原字符串, 搜索的字符串[,对比方式])     "对比方式,默认False,是否忽略大小写"
    
    UTF8.Mid:获取指定位置之后特定长度的字符串
    UTF8.Mid(原字符串, 开始位置, 截取长度[,对比方式]
    
    自定义函数提取中间字符:
    Function 提取中间字符(原字符串,  左边字符,  右边字符, 起始位置)
    	Dim 左边位置,右边位置,  提取长度
    	左边位置 = UTF8.InStr(起始位置, 原字符串, 左边字符串) + UTF8.Len((左边字符串)
    	右边位置 = UTF8.InStr(起始位置, 原字符串, 右边字符串)
    	截取长度 = 右边位置 - 左边位置
    	If 左边位置 > UTF8.Len(左边字符) and 右边位置 > 0 Then
    		提取中间字符 = UTF8.Mid(原字符串, 开始位置, 提取长度)
    	Else
    		提取中间字符 = ""
    	End If
    End Function
    
  3. Split函数获取XY坐标
    Split:按指定的字符分割字符串成Array
    数组 = Split(原字符串, 分隔符)
    
  4. 然后通过遍历TracePrint注释和Tap坐标

编写代码

之前写的框架中添加处理颜色组坐标字符串的过程

Created with Raphaël 2.3.0 遍历数组 处理颜色组str 处理坐标str 执行操作

编写好代码后基本拿《碧蓝航线》测试一下脚本:点击主线 -> 返回 -> 点击大型作战 -> 返回在这里插入图片描述

源码:

Dim file_path, 颜色组, 读取结果, 遍历赋值_3, c, coordinate

file_path = "/sdcard/Pictures/test.txt"
读取结果 = File.ReadLines(file_path)

For Each i , j In 读取结果
	遍历赋值_3 = i mod 4
	
	// 打印注释
	If 遍历赋值_3 = 1 Then
		TracePrint j
		
	// 提取颜色组字符串
	ElseIf 遍历赋值_3 = 2 Then
		颜色组 = 提取中间字符(j, chr(34), chr(34), 1)
		
	// 获取坐标数组
	ElseIf 遍历赋值_3 = 3 Then
		coordinate = Split(j, ",")
	End If

	// 根据指定画面点击特定坐标
    Do While 遍历赋值_3 = 0
        Delay 1000
        c = CmpColorEx(颜色组, 1)
        If c = 1 Then 
            Tap coordinate[1], coordinate[2]
            Exit Do
        End If
    Loop

Next


Function 提取中间字符(原字符, 左边字符, 右边字符, 起始位置)

	Dim 左边位置, 右边位置, 提取长度
	
	
	左边位置 = UTF8.InStr(起始位置, 原字符, 左边字符) + UTF8.Len(左边字符)
	右边位置 = UTF8.InStr(左边位置, 原字符, 右边字符)
	提取长度 = 右边位置 - 左边位置
	If 左边位置 > UTF8.Len(左边字符) and 右边位置 > 0 Then
		提取中间字符 = UTF8.Mid(原字符, 左边位置, 提取长度)
	Else
		提取中间字符 = ""
	End If
	
End Function

debug

  1. Call调用函数时没有返回值
  2. File.WriteLines读取的数组下标是基于1开始的,并且数组内的元素调用Split函数生成的数组也是
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值