|
加延迟绝对不是好的办法,这样也影响同一循环中其他代码的执行效率.
我推荐一种方法,目前我也在使用这样的方法降低cpu对循环找图时候的巨大压力.
先设置一个频率为100毫秒的定时器或者更高的定时器,根据你自己的情况来看.
下面是代码示例.虽然代码不规范,但是你会懂的.
功能 定时器_()///////////////////////例如设置个100毫秒的定时器
A=A+1
B=B+1
功能结束
循环(真)/////死循环无所谓
如果(A>30&&功能开关A)
///////////////////////////////如果A大于30 与 功能开关A都同时为真. 就执行找图操作. 也就是3秒执行一次找图
图像.找图(...........................................................)
.///////////////////////A如果不大于30下面这里的找图当然不执行,直接跳转到了下一个如果去执行.
A=0
././/////////////////////////////////这里找图的条件成立了,所以要把A的值重新复位为0重新开始计时.
如果结束
如果(B>30&&功能开关B)
图像.找图(...........................................................)
如果结束
循环结束
代码的思路就是不在找图之后加延迟 是把延迟加到开关上去执行.这样会提升循环里其他的找图判定执行效率,从而也解决了频繁的被找图函数搞的CPU飙升到30%的烦恼.
代码执行过程你也明白. 如果你这样写 图像.找图xxxxxxxxxxxxxx
辅助.等待(3000)
执行结果是后面的代码都要统统的等待这个3000毫秒之后才可以执行. |
|