本帖最后由 qiaohw04 于 2021-8-18 11:08 编辑
写脚本(特别游戏脚本)时, 经常遇到类似的情况: 点击了背包按钮, 如果接着就判断背包是否打开,往往识别不到, 这是因为点击后,背包不是立刻打开, 中间会经历几十或者上百毫秒, 因为时间短,所以我们主观上感觉是立刻打开的.
因此, 我们应该在点击背包按钮后, 在一段时间内循环判断背包界面的颜色特征是否出现. 以下代码可以作为参考, 为新手提供思路- function utils.waitExp(func,expireTime)
- if not expireTime then expireTime=0 end
- local sTime = systemTime()
- while (true) do
- local ret= func[1](func[2])
- if ret then
- return ret
- end
- if(systemTime() - sTime >= expireTime) then
- return false
- end
- sleep(100)
- end
- end
复制代码
参数func是一个table类型, func[1]是函数, func[2]是传入函数的参数, 注意此方法只适用于func[1]只有一个参数的情况. 参数expireTime是超时时间,单位毫秒
调用方法如下:
-- 点击背包按钮后
local 背包界面色征 = {......}
local ret = utils.waitExp({findMultiColorAllT, 背包界面色征}, 3000)
由此, 就可以实现在点击了背包按钮后, 接下来检测背包界面特征, 如果检测到背包界面,返回找色的结果(坐标), 如果3秒内没有检测到背包界面, 返回false
|