前言
前段時間因為有些項目功能需要,自己研究了下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、蘋果要越獄
今天就到這了,后續會繼續更新:動態獲取后台數據、模擬點擊、文字識別等功能