本帖最后由 TC兔子 于 2015-4-17 13:54 编辑  
 
由于身体原因,有很久一段时间没有写代码,更顾不上写教程。趁着这次5.0发布,写点简单的教程,给想学习的朋友。刚开始用的是我自己的手机,过两天再说怎么连接模拟器来写。靠谱助手,海马玩,天天,自己百度吧。 仅限新手朋友观看,老鸟们就绕道吧,我这水平已经跟不上你们的节奏了!  
请注意:代码没有进行复杂处理,只支持480*720分辨率的手机。如有不适,请自行截图。 
免责声明:本文章仅仅个人娱乐,请勿用于商业用途,如有游戏封号等一切不良后果,请自负! 
 
 
首先,简单说下几个找图的api findpic:就是按顺序找图,找到了就返回。如果你有好几个图片“rc:pic1.bmp|rc:pic2.bmp|......”,假如屏幕中有pic2, pic3,那么,当他找到pic2的时候,他就返回了,不再去找pic3。所以,如果仅仅只需要找一张图,用这个函数比较好。 他的返回值是:图片的索引号。 findpics:这个是findpic的双胞胎兄弟,他也是只找一张图片,第一张找到的图片。但是他的区别是,他的返回值是:图片的名称。 findpicex:这个函数就不一样了,他能找多个图片,并且把所有找到的图片都返回给你。 这里就有问题了,他返回的都是什么信息?如何处理?     他的返回值是:图片的索引号,x坐标,y坐标。这个图片索引号就是你给他的图片的顺序,不过他是从0开始计数的。     还有需要注意的就是,如果找图界面中同时出现几个要找的图片,那么他都会把这些坐标信息反馈在返回值里,区别就是他们的坐标不同。 findpicexs:这还用讲么,就是把索引号换成文件名了。 第二,实用找图api 新建一个安卓项目 双击项目就可以看到 - function floatwinrun()
 
 - //浮动窗口运行按钮执行的事件,如果不需要可去掉
 
 - messagebox("你好世界")
 
 - end
 
  复制代码 
这个函数,就是你在手机上点击运行按钮时执行的内容 点击以后会出现 需要注意的是:这个函数本身就是一个线程函数,如果需要加入while,for不需要再重新开线程了。可以直接使用。   想找图得有工具吧,TC自带图色助手: 打开以后就可以看到以下界面 
如果向知道具体啥用,自己去点点吧,反正坏不了你的电脑。   
说正经的,用图色助手截图吧  
                  
 这是我截取的几个图片,没有全部列出来。   
  
上代码 
 
- var winh, winw
 
 - var picnamearray = array("rc:endless.bmp", "rc:friend.bmp", "rc:buyitem.bmp", "rc:attack.bmp", "rc:dead.bmp", "rc:rewoard.bmp", "rc:continue.bmp")
 
  
- function floatwinrun()
 
 -         //浮动窗口运行按钮执行的事件,如果不需要可去掉
 
 -         //        messagebox("你好世界")
 
 -         sysgetscreen(winw, winh)
 
 -         main()
 
 -         
 
 - end
 
  
- function main()
 
 -         var totalstring = picnamearray[0]
 
 -         var totallen = arraysize(picnamearray)
 
 -         for(var i = 1; i < totallen; i++)
 
 -                 totalstring = totalstring & "|" & picnamearray[i]
 
 -         end
 
 -         
 
 -         var retstr, retstrarraylen
 
 -         var retstrarray //定义变量
 
 -         var retx = 0, rety = 0
 
 -         while(true)
 
 -                 retstr = findpicex(0, 0, winw, winh, totalstring, "151515", 0.9, 0) //使用了找多图的函数
 
 -                 if(strlen(retstr) > 0)
 
 -                         retstrarraylen = strsplit(retstr, "|", retstrarray) //获得数组的长度,并且进行分割
 
 -                         traceprint(retstrarraylen)
 
 -                         if(retstrarraylen == 1) //如果数组长度为1,则意味着只找到了一个图片,没有选择性,只需要进行点击
 
 -                                 var picpos
 
 -                                 traceprint(retstrarray[0])
 
 -                                 strsplit(retstrarray[0], ",", picpos) //再次分割找到图片的位置
 
 -                                 retx = cint(picpos[1])
 
 -                                 rety = cint(picpos[2])//这里方便新手看,多加了两步
 
 -                                 tap(retx, rety)
 
 -                                 waitcondition(picnamearray[cint(picpos[0])], false) //这个是一个等待点击结果,具体后面再解释
 
 -                         elseif(retstrarraylen == 2)
 
 -                                 var picpos
 
 -                                 
 
 -                                 for(var i = 0; i < 2; i++)
 
 -                                         strsplit(retstrarray[i], ",", picpos)
 
 -                                         if(picpos[0] == "3")
 
 -                                                 retx = cint(picpos[1])
 
 -                                                 rety = cint(picpos[2])//这里方便新手看,多加了两步
 
 -                                                 tap(retx, rety)
 
 -                                                 waitcondition(picnamearray[cint(picpos[0])], false) 
 
 -                                         end
 
 -                                 end
 
 -                         end
 
 -                 else
 
 -                         traceprint(retstr)
 
 -                 end
 
 -                 
 
 -                 sleep(300) //例行等待,不用占用太多资源
 
 -         end
 
 - end
 
  
- ////////////////////////////////////
 
 - //等待状态,判断是否继续
 
 - //参数:1.图片名字;2.是否存在;3.等待时长
 
 - ///////////////////////////////////
 
 - function waitcondition(name, trueorfalse, longtime=50)
 
 -         var  rets=-1, retx = 0, rety = 0
 
 -         for(var i = 0; i < longtime; i++)
 
 -                 rets = findpic(0, 0, winw, winh, name, "102030", 0.9, 0, retx, rety)
 
 -                 if(trueorfalse)
 
 -                         if(rets >=0 )
 
 -                                 break
 
 -                         end
 
 -                 else
 
 -                         if(rets < 0)
 
 -                                 break
 
 -                         end
 
 -                 end
 
 -                 sleep(100)
 
 -         end
 
 - end
 
  复制代码 
 
 
 
 
 
 |