飞鹿优化,原来优化如此简单!

飞鹿优化—原来优化如此简单

当前位置: 首页 > 视频教程 > 按键精灵教程 >

按键精灵手机版教程第九课:日志、分辨率、多线程

时间:2016-07-09 08:51来源:飞鹿优化 作者:飞鹿优化 点击:
1. 日志 你辛苦的做完了一个脚本,并且在自己的电脑或者手机上运行完美时,满心欢喜的丢给别人用,却发现各种问题,而
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(test_thread)
  9. TracePrint "退出脚本"
  10. EndScript
  11. End If
  12. Loop
  13.  
  14. Sub test_thread()
  15. Dim 起始颜色 = GetPixelColor(109,298)
  16. Dim 秒数 = 0
  17. Do
  18. Delay 1000
  19. Dim 结束颜色 = GetPixelColor(109,298)
  20. If 起始颜色 = 结束颜色 Then
  21. 秒数 = 秒数 + 1
  22. If 秒数 > 10 Then
  23. Thread.SetShareVar "是否卡主", true
  24. Exit Do
  25. End If
  26. TracePrint "界面已经" & 秒数 & "秒没变了"
  27. Else
  28. TracePrint "界面变化了,说明脚本还在正常运行"
  29. 起始颜色 = GetPixelColor(109,298)
  30. 秒数 = 0
  31. End If
  32. Loop
  33. End Sub
复制代码
点击运行后,我们发现界面不动的时候就开始不断的计时,一旦变化了,就重新开始计时,当计时超过设置的秒数时,脚本就退出了线程:


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

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

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


 

(责任编辑:飞鹿优化)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片