游戏开发中经常需要发布版本给策划测试,可以用svn或者ftp等来做为文件传输的渠道。

我们这边的流程一般如下:

1、在flash builder构建发布版本。

2、用Beyond Compare(文件对比工具)对比发布目录和策划测试目录里面的程序,并且把新的文件拷贝到测试目录中。

3、对比游戏资源目录和策划测试资源目录,并且把新的资源拷贝过去。

4、提交测试目录到svn。

这其中第1步有3次鼠标操作和等待时间,第2步中有3次鼠标操作和较短等待时间,第3步和第2步鼠标操作一样,但如果资源多的话就要等很久了。

每次都这样点还要等太烦了,一键操作多方便的啊。

按键精灵被很多人用来做辅助程序,当然拿来做点自动化的小工具还是不错的选择。2011年的时候同事用按键精灵来处理flash cs做界面处理的重复操作,当时他并没有编写脚本,而是用的录制宏的方式来处理的,实际中让宏循环执行时,还借助了记事本来提供一些数据。

开始接触AutoIt是大概2010年左右,原本想找一个类似shell的脚本,来帮助我在编译动态库生成后拷贝文件后,再提交svn。转换动画文件转换后自动拷贝资源,并且提交svn。但看到autoit语法太麻烦了还是没有弄。

先用按键精灵实现了一个版本,要求flash builder和beyond compare已经启动。如果让脚本来启动程序再操作,感觉太麻烦了,还要配置路径(同事电脑上面路径可能不一样),就手动先让程序都跑起来。在beyond compare中选择文件夹同步时是根据坐标计算的,用文字识别来肯定好些,但是麻烦啊~

这个按键精灵的版本在2个同事电脑上面测试,一个正常一个不正常,估计是电脑计时引起的差异。用按键精灵可以直接用脚本文件跑,不必导出小精灵,导出小精灵还有广告。有广告太烦了,所以又用autoit照着写了个。

[General]
SyntaxVersion=2
BeginHotkey=121
BeginHotkeyMod=0
PauseHotkey=0
PauseHotkeyMod=0
StopHotkey=123
StopHotkeyMod=0
RunOnce=1
EnableWindow=
MacroID=f3353dc6-1d9e-4d6d-abb5-77b2fcda5516
Description=同步到test
Enable=1
AutoRun=0
[Repeat]
Type=0
Number=1
[SetupUI]
Type=2
QUI=
[Relative]
SetupOCXFile=
[Comment]
【功能说明】
发布程序时一键操作让flash builder发布版本,然后同步到test目录
【使用说明】
先把flash builder和Beyond Compare开启,然后运行等待完成就可以提交了[Script]
Call 构建发布版()
Call test同步()
MessageBox "同步test完成"
/
//构建发布版
Sub 构建发布版()HwndEx = Plugin.Window.Search("Flash Builder")MyArray = Split(HwndEx, "|")   If UBound(MyArray)>=0 Then  Hwnd = Clng(MyArray(0))Call Plugin.Window.Max(Hwnd)Delay 100Call Plugin.Window.Active(Hwnd)Delay 100sRect = Plugin.Window.GetClientRect(Hwnd)MyArray = Split(sRect, "|")  W1 = Clng(MyArray(0)) : H1 = Clng(MyArray(1))//    MsgBox "边框大小:       "  &  W1 & "             " & H1 //选择导出MoveTo W1+385, H1+15Delay 100LeftClick 1Delay 100//开始导出Do While TrueDochuHwnd = Plugin.Window.Foreground()If DochuHwnd <> Hwnd Then Delay 500Exit DoEnd IfDelay 100Loop//    sText = Plugin.Window.GetText(DochuHwnd)//    MsgBox sText sRect = Plugin.Window.GetClientRect(DochuHwnd)MyArray = Split(sRect, "|")  DochuW1 = Clng(MyArray(0)) : DochuH1 = Clng(MyArray(1))// MsgBox "边框大小:" & DochuW1 & "," & DochuH1MoveTo DochuW1+475, DochuH1+630Delay 100LeftClick 1Delay 100//检测导出是否完成Do While TrueWanchengHwnd = Plugin.Window.Foreground()If WanchengHwnd <> DochuHwnd Then Delay 500Exit DoEnd IfDelay 100LoopsRect = Plugin.Window.GetClientRect(WanchengHwnd)MyArray = Split(sRect, "|")  WanchengW1 = Clng(MyArray(0)) : WanchengH1 = Clng(MyArray(1))// MsgBox "边框大小:" & WanchengW1 & "," & WanchengH1MoveTo WanchengW1+372, WanchengH1+134Delay 500LeftClick 1Delay 100Else Msgbox "未启动flash builder"EndScriptEnd If
End Sub
//同步文件夹
Sub 同步文件夹()Delay 100//等待进入同步界面选择同步Do While TrueGetColor = GetPixelColor(W1 + 19, H1 + 41)//MsgBox W1 & H1 & GetColorIf GetColor = "40D0FF" Then Delay 500Exit DoEnd IfDelay 100Loop//MsgBox "开始同步"//等待对比同步完成Do While TrueGetColor=GetPixelColor(W1+22, H1+308)If GetColor <> "2B53FD" Then Delay 500Exit DoEnd IfDelay 100Loop
//    MsgBox "对比完成"//判断是否需要同步GetColor = GetPixelColor(W1 + 1267, H1 + 347)If GetColor = "2BBF6D" Then Delay 500//点击同步MoveTo W1 + 1267, H1 + 347Delay 100LeftClick 1Delay 100//等待同步完成Do While TrueGetColor=GetPixelColor(W1+15, H1+462)If GetColor = "82DAF4" Then Delay 500//MsgBox "同步完成"Exit DoEnd IfDelay 100LoopEnd IfDelay 100//返回MoveTo W1+19, H1+41Delay 100LeftClick 1Delay 100
End Sub
Sub test同步()//对文件进行拷贝HwndEx = Plugin.Window.Search("Beyond Compare")MyArray = Split(HwndEx, "|")   If UBound(MyArray)>=0 Then  Hwnd = Clng(MyArray(0))Call Plugin.Window.Max(Hwnd)Delay 100Call Plugin.Window.Active(Hwnd)Delay 100//    sRect = Plugin.Window.GetWindowRect(Hwnd)sRect = Plugin.Window.GetClientRect(Hwnd)MyArray = Split(sRect, "|")  W1 = Clng(MyArray(0)) : H1 = Clng(MyArray(1))//确保在最开始界面返回MoveTo W1+19, H1+41Delay 100LeftClick 1Delay 100//同步test程序MoveTo W1+367, H1+444Delay 100LeftClick 1Delay 20LeftClick 1Delay 100Call 同步文件夹()//同步test资源MoveTo W1+354, H1+427Delay 100LeftClick 1Delay 20LeftClick 1Delay 100Call 同步文件夹()Else Msgbox "未启动Beyond Compare"EndScriptEnd If
End Sub

autoit版本的鼠标移动是有轨迹移动的,不是瞬移,在按键的时候应该会好些。导出一个exe随便哪都可以用了。

;同步到test
BuildRelease()
SyncTest()
MsgBox(0,"提示","同步test完成");构建发行版本
Func BuildRelease()
Local $hwnd = WinGetHandle("[REGEXPTITLE:[\s\S]+Flash Builder]")
;MsgBox(0, "Details", WinGetTitle($hwnd))
If $hwnd <> "" ThenWinSetState($hwnd, "", @SW_MAXIMIZE)Sleep(100)WinActivate($hwnd)Sleep(100)Local $size = WinGetPos($hwnd);MsgBox(0, "Active window stats (x,y,width,height):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])Local $x=$size[0]Local $y=$size[1];选择导出MouseMove($x+396, $y+65,5)Sleep(100)MouseClick("left")Sleep(100);开始导出WinWaitActive("导出发行版")$hwnd = WinGetHandle("导出发行版");//MsgBox(0,"句柄",$hwnd)$size = WinGetPos($hwnd)$x=$size[0]$y=$size[1]MouseMove($x+473, $y+659,5)Sleep(100)MouseClick("left");检测导出是否完成WinWaitNotActive($hwnd)Local $wanchen = WinGetHandle("导出发行版");//MsgBox(0,"句柄",$wanchen)$size = WinGetPos($wanchen)$x=$size[0]$y=$size[1]MouseMove($x+374, $y+167,5)Sleep(100)MouseClick("left")Sleep(500)
ElseMsgBox(0,"错误","未启动flash builder")Exit
EndIf
EndFunc;同步文件夹
Func SyncDir($x,$y,$hwnd);//等待进入同步界面选择同步DoSleep(100)Local $Color=PixelGetColor($x+27, $y+71,$hwnd);MsgBox(0,"color",Hex($Color,6))Until $Color==0xffd040;//等待对比同步完成Sleep(500)DoSleep(100)$Color=PixelGetColor($x+30, $y+338,$hwnd)Until $Color<>0xfd532b;//判断是否需要同步Sleep(500)$Color=PixelGetColor($x+1275, $y+377,$hwnd)If $Color==0x6dbf2b Then;//点击同步MouseMove($x+1275, $y+377,5)Sleep(100)MouseClick("left")Sleep(500);//等待同步完成DoSleep(100)$Color=PixelGetColor($x+23, $y+492,$hwnd)Until $Color==0xf4da82EndIf;//返回MouseMove($x+27, $y+71,5)Sleep(100)MouseClick("left")Sleep(100)
EndFunc;test同步
Func SyncTest()
Local $hwnd = WinGetHandle("[REGEXPTITLE:[\s\S]+Beyond Compare]")
;MsgBox(0, "Details", WinGetTitle($hwnd))
If $hwnd <> "" ThenWinSetState($hwnd, "", @SW_MAXIMIZE)Sleep(100)WinActivate($hwnd)Sleep(100)Local $size = WinGetPos($hwnd);MsgBox(0, "Active window stats (x,y,width,height):", $size[0] & " " & $size[1] & " " & $size[2] & " " & $size[3])Local $x=$size[0]Local $y=$size[1];//确保在最开始界面返回MouseMove($x+27, $y+71,0)Sleep(100)MouseClick("left")Sleep(100);//同步test程序MouseMove($x+375, $y+474)Sleep(100)MouseClick("left")Sleep(20)MouseClick("left")Sleep(100)SyncDir($x,$y,$hwnd);//同步test资源MouseMove($x+362, $y+457)Sleep(100)MouseClick("left")Sleep(20)MouseClick("left")Sleep(100)SyncDir($x,$y,$hwnd)
ElseMsgBox(0,"错误","未启动Beyond Compare")Exit
EndIf
EndFunc

现在用着速度比人手工快多了。以后再也不用担心发布了~

开发中的自动化——按键精灵AutoIt相关推荐

  1. 中控PHP开发,易语言PHP按键精灵搭建中控系统

    此中控系统功能如下: 1.用户在电脑可以按指定端口号(实际就是一个用户标识,用于区分的)导入批量账号密码 2.可以使用按键精灵安卓版读取导入的账号,实现多手机读取 涉及到的语言: PHP+MYSQL ...

  2. 按键精灵定义全局变量_按键精灵中如何定义和使用变量

    展开全部 按键的变量一般不用专门定义. 初始赋值的时候会自动定义为最适e69da5e887aa62616964757a686964616f31333365663466合的变量. 你的语句大概如下: a ...

  3. 怎么写安卓手机脚本_史上最牛掰按键精灵手机版教材

    这篇教程给大家介绍一下按键精灵手机助手的相关操作和用途.,下图就是按键精灵手机助手的编辑界面. 下面我们讲解一下什么是按键精灵手机助手,以及按键精灵手机助手的用途,相信大部分使用按键精灵的朋友都是从按 ...

  4. 按键精灵开发者认证1-6题库

    这是以前整理的题库,包过. 题目:(前台)区域范围为(100,150)到(200,300)内的所有点是否均为"FFFFFF",是则弹出对话框"没有其他颜色",否 ...

  5. 什么是按键精灵的插件

    金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚 ...

  6. 按键精灵Introduce

    按键精灵 官网: http://www.vrbrothers.com/cn/qmacro/ 1. http://www.heibai.net/book/html/shiyonggongju/qitar ...

  7. 如何快速制作脚本之学习怎么开发游戏辅助中自动加血的脚本——以按键精灵脚本制作的颜色坐标选取为例

    简介: 按键精灵2014--简单游戏脚本免费制作开发工具,按键精灵论坛配有易学易懂的简单脚本开发教程,学习游戏脚本开发必备软件,教你怎么开发脚本,如何快速制作脚本.还有丰富的免费游戏脚本下载~ 工具/ ...

  8. python调用按键精灵插件_开发中IDE的选择?如何在VsCode上配置CC++,Java,Python环境...

    前言 工欲善其事必先利其器,这也是老生常谈的事情了.在做日常开发中,让我感受到一个顺手的开发工具的重要性.截至目前对于不同语言自己也使用过很多开发工具,有一些简单的编辑器例如:notepad++.Ed ...

  9. 视频教程-按键精灵手机版解放您的双手自动化教程-Android

    按键精灵手机版解放您的双手自动化教程 从事游戏开发已经13年以上,软件开发管理10年以上. 段安 ¥29.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程 ...

最新文章

  1. c++2015-2019存在异常_什么是血脂?什么是脂蛋白?什么是血脂异常?有哪些危害?...
  2. nginx源码分析之网络初始化
  3. 塞班手机刷linux,14年前的E680携带linux系统把诺基亚塞班系统按在地板摩擦
  4. php 图片 圆角,PHP将图片处理成圆角
  5. 机器学习工程师 — Udacity 电影评分的 k 均值聚类
  6. jbpm工作流动态会签
  7. 机器人genghis_家用机器人的未来
  8. Django学习——1.创建第一个项目
  9. 蓝桥杯单片机串口通信学习提升笔记
  10. 西工大计算机夏令营经验贴:2017~2019笔试、面试及完整流程
  11. ASO外的App推广方式有这些
  12. 谷粒学院day5 讲师管理模块的前端实现
  13. jquery tip提示框
  14. 2016年的年终总结
  15. 【无标题】MySQL两种安装方式
  16. win32 C++制作美观按钮,告别win32 API编程中默认的灰色按钮
  17. 物业管理系统常见功能
  18. 2022-3-31 Leetcode 415.字符串相加
  19. rs485无线通讯模块在工业测控中的应用
  20. PDA+VFP对接用友U8,我以为很难,直通透传实在爽,扔掉笨重的JAVA

热门文章

  1. 疫情防控|Springboot+小程序+校园疫情防控系统设计与实现
  2. El表达式和js变量
  3. 配置服务器证书,Windows Server 2008 R2 下配置证书服务器和HTTPS的图文教程
  4. 设置Everything不搜索$RECYCLE.BINand
  5. 忘记密码解决,Win7 Administrator账号密码忘记 解决办法
  6. 禁止jenkins杀死衍生进程
  7. 非阻塞网络编程详解------IO模型
  8. Dotnetty ClosedChannelException I/O error occurred 异常原因
  9. 如何挖掘大数据这座“钻石矿”
  10. dx 生成 DEX文件流程分析