1. 日志
你辛苦的做完了一个脚本,并且在自己的电脑或者手机上运行完美时,满心欢喜的丢给别人用,却发现各种问题,而对方又无法描述清楚的时候,很着急有没有!别急,你不懂,但是他懂啊—-日志,我们打开命令大全看看怎么使用:

只有两个命令,一个开启日志,一个关闭日志。前面说过的TracePrint没忘吧!这个绝对好用啊,请想起来一次用一次,因为日志记录的就是TracePrint的信息,只要在脚本一开始的地方添加Log.Open,结束的地方添加Log.Close,就可以将你脚本中所有的TracePrint的信息记录到一个文本上,你只需要让用户将这个文本发给你,就很方便的找到卡住的地方加以修正。
还是写来测试看看吧:

  1. Log.Open
  2. TracePrint “test”
  3. TracePrint GetTempDir()
  4. Log.Close

复制代码

我们在一开始开启了日志记录,在最后关闭日志记录,中间还有两个TracePrint语句,分别输出字符串和按键精灵安卓版的目录,那么日志文件就是记录这两句输出,我们打开文件管理器,找到日志文件:

打开他,我们可以看到一个含有当前时间的日志文件,我们将它移动至桌面,使用记事本打开就可以看到信息:

如果是想成为按键作者的,请务必使用日志记录啊(亲身经历有木有,没加日志的时候解决问题那叫一个痛苦,满眼都是泪啊)
2. 分辨率
当你辛苦的做完了一个脚本,并且在自己的电脑或者手机上运行完美时,满心欢喜的丢给别人用,却发现各种问题(这段话好眼熟- -),

其中很大的可能性都来自于同一个—-分辨率问题。这种情况在模拟器上还好解决,但是到手机上就不好解决,手机分辨率众多,而且游戏也不完全以拉伸方式来填充屏幕。但是没有办法创造办法也要上不是,因此SetScreenScale诞生了,适合用在同一个屏幕比例的设备,比如1280*720与1920*1080都是16:9的屏幕。那么在1280*720的设备上做的脚本,在1920*1080的设备上也大部分能用(如果均用的多点比色,多点找色,并且取点的颜色的位置尽量取大片颜色的正中央,小部分的情况是界面并不以同比例拉伸,这种情况要分开做),不同比例的设备暂时没有好的解决办法,只能不改变逻辑的情况下重新获取颜色坐标写一遍。

如果使用了找图的方式,那么在需要制作多个分辨率的同一个图,不能使用SetScreenScale来自适应。比如我使用720*1280分辨率进行开发,那么就在开头写上:

  1. SetScreenScale 720,1280

复制代码

使用SetScreenScale能节约大量的时间,我们不妨先直接使用,然后写好之后再使用不同分辨率的设备进行调试,界面不是等比例变化的再分开去写。
3. 多线程

相信很多童鞋对那种时不时弹出来的窗口深痛欲绝(网络连接失败之类的)。由于他的不确定性,我们很难在适当的时候去处理他(每个联网的地方都去检测很麻烦不是),那么我们可以用多线程来解决这个问题,多线程相当于多个大脑,可以同时做不同的事情,我们可以一个线程用来运行脚本内容,一个线程用来检测超时,这里我们写个简单的多线程检测:

  1. Dim 检测线程
  2. Thread.SetShareVar “是否卡主”, false
  3. 检测线程 = Thread.Start(test_thread)
  4. Do
  5. Delay 500
  6. If Thread.GetShareVar(“是否卡主”) = true Then
  7. TracePrint “卡着超过10秒,结束线程”
  8. Thread.Stop(检测线程)
  9. TracePrint “退出脚本”
  10. EndScript
  11. End If
  12. Loop
  13. Sub test_thread()
  14. Dim 起始颜色 = GetPixelColor(109,298)
  15. Dim 秒数 = 0
  16. Do
  17. Delay 1000
  18. Dim 结束颜色 = GetPixelColor(109,298)
  19. If 起始颜色 = 结束颜色 Then
  20. 秒数 = 秒数 + 1
  21. If 秒数 > 10 Then
  22. Thread.SetShareVar “是否卡主”, true
  23. Exit Do
  24. End If
  25. TracePrint “界面已经” & 秒数 & “秒没变了”
  26. Else
  27. TracePrint “界面变化了,说明脚本还在正常运行”
  28. 起始颜色 = GetPixelColor(109,298)
  29. 秒数 = 0
  30. End If
  31. Loop
  32. End Sub

复制代码

点击运行后,我们发现界面不动的时候就开始不断的计时,一旦变化了,就重新开始计时,当计时超过设置的秒数时,脚本就退出了线程:

 

脚本的逻辑很简单,我们取一个坐标,不断的判断这个坐标的颜色,如果这个坐标颜色长时间没变,那么我们就认为卡住了。(可以判断多个点提高准确性)。已经大学了,我就不再贴命令大全的图了,学会自己去看吧!

线程的启动停止都好理解,但这里的共享变量使用的方法让我们感到疑惑,我们一开始是用Dim来设置变量的,但是线程却不是,这说明,Dim设置的变量其实只是一个线程的变量,而Thread.SetShareVar才是真正的全局变量。学到了!记下来!

多线程容易造成抢资源,造成手机卡顿,因此使用需要谨慎,使用时可以尽量减少其中一个线程的耗时操作,比如找图找色,最好只用来修改变量。

声明:
本站所有文章,如无特殊说明或标注,均为本站原创发布。
任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。