• 按键精灵中的日志、分辨率、找色逻辑、线程


    1. 开启输出日志

    1. // 开启日志
    2. Log.Open
    3. TracePrint "你好"
    4. TracePrint "世界"
    5. // 关闭日志
    6. Log.Close
    7. // 输出日志
    8. TracePrint GetTempDir()
    9. // 当前脚本第4行:你好
    10. // 当前脚本第6行:世界

    2. 设置分辨率

    在写脚本的时候,会针使用一个固定的屏幕分辨率来编写,但是当这个脚本在其它分辨率的手机上使用时就会无法正常运行,为此就需要提前声明脚本分辨率,这样脚本在运行时就会根据当前手机屏幕分辨率与脚本编写时声明的手机分辨率进行比例缩放,相关的坐标位置也会跟着比例做位移。

    1. SetScreenScale 720 1280
    2. Tap 100,100
    3. // 上面点击的坐标在1080*1920的屏幕下会点击以下位置
    4. Tap 100 * (1080 / 720), 100 * (1920 / 1280)

    3. 多点找色逻辑

    1. // 定义找色点击方法
    2. Function findColorClick()
    3. // 无限循环
    4. Do
    5. // 通过多色对比找到初始界面
    6. If CmpColorEx("123|389|D97700-101010,285|170|55351E-101010,59|27|461F02-101010,602|251|371803-101010",0.9) = 1 Then
    7. // 点击目标
    8. Tap 88, 884
    9. End If
    10. // 延时进行画面切换
    11. Delay 200
    12. // 校验点击目标后页面是否正确
    13. If CmpColorEx("222|67|F7F3F3-101010,409|150|F10B22-101010,371|397|F7F3F3-101010,254|1223|FFFFFF-101010",0.9) = 1 Then
    14. TracePrint "打开了"
    15. // 退出循环
    16. Exit Do
    17. End If
    18. Loop
    19. End Function
    20. // 调用点击方法
    21. Call findColorClick()
    22. // 调用下一步方法

    4. 多线程调用

    利用多线程实现一个检测游戏脚本运行是否卡住的程序

    1. // 设置共享变量
    2. Thread.SetShareVar "checkThread", false
    3. // 开启游戏子线程
    4. Dim id = Thread.Start(gameSubThread)
    5. // 主程序循环检测
    6. Do
    7. Delay 500
    8. // 获取共享变量的结果
    9. Dim checkResult = Thread.GetShareVar("checkThread")
    10. // 如果结果为真
    11. If checkResult = true Then
    12. // 退出子线程
    13. TracePrint "退出线程"
    14. Thread.Stop (id)
    15. Exit Do
    16. End If
    17. Loop
    18. // 声明游戏检测线程
    19. Function gameSubThread()
    20. // 获取点的颜色
    21. Dim color1 = GetPixelColor(427,269)
    22. // 设置定时器
    23. Dim count = 0
    24. Do
    25. Delay 1000
    26. // 再次获取同一坐标的颜色
    27. Dim color2 = GetPixelColor(427,269)
    28. // 如果两个颜色相等
    29. If color1 = color2 Then
    30. // 计时器加1
    31. count = count + 1
    32. // 输出卡住的时间
    33. TracePrint "界面卡住了"&count&"秒"
    34. // 如果计数的时间大于10
    35. If count > 10 Then
    36. TracePrint "修改全局变量:检测线程"
    37. // 设置检测结果为true
    38. Thread.SetShareVar "checkThread", true
    39. End If
    40. Else
    41. TracePrint "界面发生变化了"
    42. // 清空计时器
    43. count = 0
    44. // 重新获取坐标颜色
    45. color1 = GetPixelColor(427, 269)
    46. End If
    47. Loop
    48. End Function
  • 相关阅读:
    WSL2快速上手
    JAVA【泛型】详解
    MySQL高级SQL语句
    Java中CAS算法的集中体现:Atomic原子类库,你了解吗?
    毕业图形采集【个人】
    微型计算机基础
    JS 原生实现触底加载
    47Haproxy集群
    ESP8266-Arduino编程实例-LittleFS及数据上传
    二叉树的详细实现(含递归展开图)
  • 原文地址:https://blog.csdn.net/weixin_40629244/article/details/134386640