前言

前段时间因为有些项目功能需要,自己研究了下lua,今天整理下,并以一个demo为示例演示

手机上的运行效果

分为几个步骤来逐步讲解。

1.lua介绍,为什么选择它?

2.环境安装

3.撸一个简单demo

一.lua介绍,为什么选择它?

Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

  • 轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。
  • 可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。
  • 其它特性:
  • 支持面向过程(procedure-oriented)编程和函数式编程(functional programming);
  • 自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
  • 语言内置模式匹配;闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;
  • 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。

    Lua 应用场景:
  • 游戏开发
  • 独立应用脚本
  • Web 应用脚本
  • 扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench
  • 安全系统,如入侵检测系统

为什么选择他?

别问,问就是因为赶时间,而这个实现起来快、快、快,当今互联网时代,什么都要快



正所谓没有最牛的语言、框架。直接抛开外在客观因素、外在条件去聊方案都是耍流氓

二.环境安装

我用了2个,一个叉叉助手、一个触动精灵,由于需要使用触动精灵里面自带的识别类库,所以后续用了触动精灵,直接百度搜索然后下载对应的IDE,这里我就不过多介绍了,反正就是有手就行。稍微描述下:

触动精灵采用 Lua 脚本语言作为底层语言,支持 Lua 5.2.3 版本的所有语法与基本函数,并在其基础上添加了一些扩展函数,用于实现取色、找色、找图、发送触摸事件等高级功能。

三.撸一个demo

1.打开IDE,新建一个工程 demo,如图:



main.lua就是主函数,程序的入口

2.先简单介绍下语法:

函数:init 坐标初始化

函数名称:坐标初始化

函数功能:脚本运行前必须调用,以设置设备方向及坐标系

函数方法

init(rotate);

返回值:无

|参数 |类型 |必填 |说明 |

|:--|

|rotate |number |是 |屏幕方向,0 - Home 键在底部,1 - Home 键在右侧,2 - Home 键在左侧 |

函数用例

init(0)
-- iOS 设备以 Home 键在下方时的屏幕左上角为坐标系原点(0,0),iOS 7 以上系统有效;
--安卓设备以当前屏幕默认截图方向进行初始化
init(1);
--iOS 设备以当前应用 Home 键在右边初始化,即以 Home 键在右侧时的横屏左上角为屏幕坐标原点(0,0)
--安卓设备以屏幕默认截图方向向左旋转 90° 进行初始化
init(2);
--iOS 设备以当前应用 Home 键在左边初始化,即以 Home 键在左侧时的横屏左上角为屏幕坐标原点(0,0)
--安卓设备以屏幕默认截图方向向右旋转 90° 进行初始化



注意事项

  • 安卓系统不同设备初始的截图方向有所不同,使用安卓手机尤其是模拟器编写脚本前请用截图函数确认设备的默认方向。
  • 此函数可在脚本运行过程中多次调用以改变屏幕方向。
  • 如在脚本中未指定屏幕方向,系统将默认为竖屏或初始方向。
  • 安卓设备根据机型初始方向有区别,需要开发者自行调试,0 - 初始方向,1 - 初始方向向左旋转 90°,2 初始方向向右旋转 90°。
  • init 方向不受是否锁屏影响。
  • Bundle ID 的获取方法
  • 在触动精灵客户端的 更多/我的账号 -> 应用 ID 查询 中能查看到应用程序的 Bundle ID。
  • iOS 使用 iFile、PP 助手等软件可查看应用文件夹下的 Info.plist,其中的 CFBundleIdentifier 即为该应用的 Bundle ID。
  • 使用 frontAppBid 函数,前台运行要获取 Bundle ID 的应用,运行此函数并用 diolag、toast、nLog 函数显示返回值。

函数:dialog 提示框

函数名称:对话框,弹窗,提示框

函数功能:弹出提示信息

函数方法

dialog(text,timeout)

返回值:无

|参数 |类型 |必填 |说明 |

|:--|

|text |string |否 |提示信息,将在设备屏幕上以弹窗形式显示 |

|timeout |number |是 |提示信息显示的时间,不限时间请填 0 |

函数用例

欢迎使用

--Android 系统在部分设备上需要在系统设置里开启悬浮窗权限方可正常使用此函数
dialog("欢迎使用触动精灵!",5);
mSleep(1000);
dialog("对话框。\n 提示信息可以换行",0);

修改标题及按钮文字

引擎版本:仅支持 Androidv3.2.0、iOSv3.1.5 及其以上版本

函数方法

dialog(text,{timeout,title,button})

|参数 |类型 |必填 |说明 |

|:--|

|text |string |是 |提示信息,将在设备屏幕上以弹窗形式显示 |

|tab |table |否 |显示时间、标题文字、按钮文字 |

tab 参数介绍

|参数 |类型 |必填 |说明 |

|:--|

|timeout |number |否 |提示信息显示的时间,不限时间请填 0 |

|title |string |否 |标题文字,默认文字:脚本提示 |

|button |string |否 |按钮文字,默认文字:确定 |

函数用例

--Android 系统在部分设备上需要在系统设置里开启悬浮窗权限方可正常使用此函数
dialog("欢迎使用触动精灵!",5);
dialog("提示文字",{timeout = 10,title = "标题文字",button = "按钮文字"})

注意事项

  • time 参数时间一般在 2 秒以上,否则出现时间太短看不清楚。
  • 该函数仅供呈现提示信息给用户,不可接收返回值。
  • 该函数所产生的提示窗口显示的时候会影响当前屏幕取色,请在合理的位置使用该函数。
  • 关于转义字符:\r \n 为换行,请查阅 Lua 转义字符表。
  • 安卓系统在部分设备上需要在系统设置里开启使用此函数方可正常。

在pc端进行连接手机打包工程到手机



点击连接设备-》链接设备,输入手机上的设备信息中的网络IP进行连接完成

点击PC端上打包工程和发送文件即可将脚本发送到手机侧,手机上看的效果是如下图:



左上角小图标进行点击后弹出服务窗口,点击运行按钮即可运行 我们刚才在IDE上写的脚本

可以看到手机上会弹出我们写的hello world:

这个时候我们就完成了第一步,实现了环境的搭建以及第一个demo程序的运行

注意事项:

1.手机的网段要和PC保持一致,不然无法连接

2.安卓手机需要root、苹果要越狱

今天就到这了,后续会继续更新:动态获取后台数据、模拟点击、文字识别等功能

福禄·研发中心
福乐里

lua入门之环境搭建、第一个demo的更多相关文章

  1. scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  2. scala 入门Eclipse环境搭建

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...

  3. ArcGIS API for JavaScript开发环境搭建及第一个实例demo

    原文:ArcGIS API for JavaScript开发环境搭建及第一个实例demo ESRI公司截止到目前已经发布了最新的ArcGIS Server for JavaScript API v3. ...

  4. Cesium入门2 - Cesium环境搭建及第一个示例程序

    Cesium入门2 - Cesium环境搭建及第一个示例程序 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 验 ...

  5. 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建

    003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...

  6. 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)

    总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■   CLI是Command-Lin ...

  7. Android入门之环境搭建

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...

  8. webpack快速入门——webpack3.X 快速上手一个Demo

    1.进入根目录,建两个文件夹,分别为src和dist 1).src文件夹:用来存放我们编写的javascript代码,可以简单的理解为用JavaScript编写的模块. 2).dist文件夹:用来存放 ...

  9. 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布

    Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...

随机推荐

  1. P3507-[POI2010]GRA-The Minima Game【dp,博弈论】

    正题 题目链接:https://www.luogu.com.cn/problem/P3507 题目大意 \(n\)个数,没人轮流取若干个并获得取走的数中最小数的权值,两人的目标都是自己的权值\(-\) ...

  2. SpaCy下载及安装

    SpaCy可以说是坑多到怀疑人生.. 但是看在它那么功能那么强大的份上,我还是决定原谅它哈哈哈~ 1.首先用官网给的命令快速安装纯属扯淡..(结果就是一直拒绝你的连接) 官网:https://spac ...

  3. 11.5.2 LVS-NAT 实验

    NAT拓扑 lvs-server VIP:10.211.55.99DIP:10.37.129.99 负载均衡器 开启路由功能(VIP桥接,DIP仅主机) rs01 RIP:10.37.129.3 后端 ...

  4. 【集成学习】:Stacking原理以及Python代码实现

    Stacking集成学习在各类机器学习竞赛当中得到了广泛的应用,尤其是在结构化的机器学习竞赛当中表现非常好.今天我们就来介绍下stacking这个在机器学习模型融合当中的大杀器的原理.并在博文的后面附 ...

  5. Endian

    Endian 寻址 多字节对象被存储为连续的字节序列,对象的地址为所使用字节中最小的地址. 例如,假设一个类型为 int 的变量 a 的地址为 0x100,也就是说,地址表达式 &a 的值为 ...

  6. WinForm RichTextBox 常用操作

    1.设置不自动选择字词 RichTextBox在选择文字的时候,如果没有关闭自动选择字词功能,我们有时候选择的时候会自动将光标前后的字或者词连接在一起进行选择. RichTextBox有属性AutoW ...

  7. Java中的函数式编程(四)方法引用method reference

    写在前面 我们已经知道,lambda表达式是一个匿名函数,可以用lambda表达式来实现一个函数式接口.   很自然的,我们会想到类的方法也是函数,本质上和lambda表达式是一样的,那是否也可以用类 ...

  8. rocketmq优雅停机往事

    1 时间追溯到2018年12月的某一天夜晚,那天我正准备上线一个需求完就回家,刚点下发布按钮,告警就响起,我擦,难道回不了家了?看着报错量只有一两个,断定只是偶发,稳住不要慌. 把剩下的机器发完,又出 ...

  9. UltraSoft - Beta - Scrum Meeting 2

    Date: May 18th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 建立Beta仓库管理增加服务器部署和Git协作文档 Liuzh 前端 查阅响应式布 ...

  10. js_数据类型转换

    转整数----parseInt(string,radix) 1)类似于从左往右匹配数字,直到匹配到非数字结束,并返回匹配到的数字.同parseFloat(). parseInt("123&q ...