lua入門之環境搭建、第一個demo

福祿網路研發團隊發表於2021-11-11

前言

前段時間因為有些專案功能需要,自己研究了下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
  • 安全系統,如入侵檢測系統

為什麼選擇他?
別問,問就是因為趕時間,而這個實現起來快、快、快,當今網際網路時代,什麼都要快
20211108184309
正所謂沒有最牛的語言、框架。直接拋開外在客觀因素、外在條件去聊方案都是耍流氓

二.環境安裝

我用了2個,一個叉叉助手、一個觸動精靈,由於需要使用觸動精靈裡面自帶的識別類庫,所以後續用了觸動精靈,直接百度搜尋然後下載對應的IDE,這裡我就不過多介紹了,反正就是有手就行。稍微描述下:
觸動精靈採用 Lua 指令碼語言作為底層語言,支援 Lua 5.2.3 版本的所有語法與基本函式,並在其基礎上新增了一些擴充套件函式,用於實現取色、找色、找圖、傳送觸控事件等高階功能。

三.擼一個demo

1.開啟IDE,新建一個工程 demo,如圖:
20211108184326
main.lua就是主函式,程式的入口
2.先簡單介紹下語法:
20211108184338

函式: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° 進行初始化

20211108184404
注意事項

  • 安卓系統不同裝置初始的截圖方向有所不同,使用安卓手機尤其是模擬器編寫指令碼前請用截圖函式確認裝置的預設方向。
  • 此函式可在指令碼執行過程中多次呼叫以改變螢幕方向。
  • 如在指令碼中未指定螢幕方向,系統將預設為豎屏或初始方向。
  • 安卓裝置根據機型初始方向有區別,需要開發者自行除錯,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端進行連線手機打包工程到手機
20211108184421
點選連線裝置-》連結裝置,輸入手機上的裝置資訊中的網路IP進行連線完成

點選PC端上打包工程和傳送檔案即可將指令碼傳送到手機側,手機上看的效果是如下圖:
20211108184431
左上角小圖示進行點選後彈出服務視窗,點選執行按鈕即可執行 我們剛才在IDE上寫的指令碼
可以看到手機上會彈出我們寫的hello world:
20211108184441

這個時候我們就完成了第一步,實現了環境的搭建以及第一個demo程式的執行
注意事項:
1.手機的網段要和PC保持一致,不然無法連線
2.安卓手機需要root、蘋果要越獄

今天就到這了,後續會繼續更新:動態獲取後臺資料、模擬點選、文字識別等功能

福祿·研發中心 福樂裡

相關文章